博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢欣赏linux 内核的重定位
阅读量:4069 次
发布时间:2019-05-25

本文共 554 字,大约阅读时间需要 1 分钟。

内核非解压缩部分是增加 -fPIC选项。

static 的全局变量访问类似于函数,是通过当前地址ip + 固定偏移访问;
非static 的全局变量是通过got表访问;
没有外部函数,不依赖于外部函数,所以不需要got表和plt表。

内核压缩的部分没有使用-fPIC选项,而是使用重定位表搞定,实现方式如下,参考后面的文章。

1: subl $4, %edi
 movl 0(%edi), %ecx
 testl %ecx, %ecx 重定位表最后以一个零结束,如果遇到零,则重定位完成。
 jz 2f
 addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)将装载位置和编译位置的差值EBX添加到内核中所有需要重定位的位置,可能包括代码段和数据段。

i386 relocatable内核实现
https://www.cnblogs.com/tsecer/p/10485826.html

从机器码理解RIP 相对寻址

https://www.cnblogs.com/papertree/p/6298763.html

@table注解详解_Linux KASLR机制详解

https://blog.csdn.net/weixin_29662775/article/details/112143028

你可能感兴趣的文章
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记13:组合模式(Composite)
查看>>
hdu 1011 Starship Troopers (树形背包dp)
查看>>
hdu 1561 The more, The Better (树形背包dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>