PWN入门之简析延迟绑定技术

对于延迟绑定技术还是不太了解适宜看一下这篇文章

延迟绑定绑定技术就是Linux下ELF程序在调用函数时动态链接的方式。为了优化内存,加快运行速度等等原因,ELF程序运用了这样的技术来调用函数。

简单的说就是程序在调用函数时先jmp fun@plt 进入plt表。接着jmp fun@got,这时候的got表中并没有存储函数真实的地址。程序到这里需要调用_dl_runtime_resolve这个函数。通过这个函数再填充got表然后在下一次调用fun的时候进入真正的函数地址。

下面的划重点
_dl_runtime_resolve这个函数在got[2]中,而got[0]got[1]分别是.dynamic和link_map。这两项可以理解为在调用_dl_runtime_resolve时候需要准备的。
在函数第一次调用的时候到got表中需要准备_dl_runtime_resolve的参数。首先jmp回plt表的一个位置。接着push 0x20,在栈上准备调用函数的参数。然后jmp到plt表的另一个地方push link_map的地址,这里也是在准备参数。后面jmp got[2] 调用_dl_runtime_solve对got表进行填充。下次再次调用函数时直接jmp .plt jmp .got进入函数真实地址

附上大佬对于_dl_runtime_solve的原理讲解的链接。
_dl_runtime_solve

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值