欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

64位ret2_runtime_resolve解析

程序员文章站 2022-07-15 14:59:06
...

64位runtime_resolve解析

翻了很多网上都没有详细的讲过64位的ret2_runtime_resolve,干脆就自己研究写写
首先我们第一次调用一个函数的时候会先压2个参数进栈
这里的列子是puts函数第一个参数是realoc_arg,第二个参数link_map,可能有一些结构体名字有错误请见谅
64位ret2_runtime_resolve解析
然后就是3个结构体非常重要
可能我的一些结构名字错了但是这三个地址十分的重要
64位ret2_runtime_resolve解析
根据DT_RELA+8里面存的地址+加上0x30+realoc_arg*0x18就对应到了对应函数的got表地址和dymstr的偏移
64位ret2_runtime_resolve解析
图上有误,不是strname的偏移是strname偏移的偏移大家这么理解即可
然后讲strname偏移的偏移向右移32位就会的到strname的偏移的便宜如图是

0x0000000100000007>>32=1

所得strname的偏移的偏移是1
然后定位到第一张图的strsym+8处此地址存储的是strname的偏移我们根据刚才所得的用下标编号看即可
64位ret2_runtime_resolve解析
如上图就是我们找到的str_name的偏移最后我们根据第一张图的strname的地址+8里面存的字符串找到函数名
64位ret2_runtime_resolve解析

64位ret2_runtime_resolve解析

相关标签: 学习 pwn