64位ret2_runtime_resolve解析
程序员文章站
2022-07-15 14:59:06
...
64位runtime_resolve解析
翻了很多网上都没有详细的讲过64位的ret2_runtime_resolve,干脆就自己研究写写
首先我们第一次调用一个函数的时候会先压2个参数进栈
这里的列子是puts函数第一个参数是realoc_arg,第二个参数link_map,可能有一些结构体名字有错误请见谅
然后就是3个结构体非常重要
可能我的一些结构名字错了但是这三个地址十分的重要
根据DT_RELA+8里面存的地址+加上0x30+realoc_arg*0x18就对应到了对应函数的got表地址和dymstr的偏移
图上有误,不是strname的偏移是strname偏移的偏移大家这么理解即可
然后讲strname偏移的偏移向右移32位就会的到strname的偏移的便宜如图是
0x0000000100000007>>32=1
所得strname的偏移的偏移是1
然后定位到第一张图的strsym+8处此地址存储的是strname的偏移我们根据刚才所得的用下标编号看即可
如上图就是我们找到的str_name的偏移最后我们根据第一张图的strname的地址+8里面存的字符串找到函数名
推荐阅读
-
Mybaits 源码解析 (十一)----- 设计模式精妙使用:静态代理和动态代理结合使用:@MapperScan将Mapper接口生成代理注入到Spring
-
吃樱桃胖吗解析
-
HiveSql解析(基于AST)
-
iOS多线程应用开发中自定义NSOperation类的实例解析
-
解析iOS应用的UI开发中懒加载和xib的简单使用方法
-
实例解析iOS中音乐播放器应用开发的基本要点
-
中国古代王朝为什么突破不了300年?解析历史300年怪圈现象!
-
Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
-
SpringMVC 自定义参数解析器.
-
Java解析复杂JSON数据的一种方法