【Android安全】Frida PLT hook与Inline Hook

Frida PLT hook与Inline Hook

参考:http://www.520monkey.com/archives/1359

1. Linux 动态链接延时绑定(PLT与GOT)

Linux在执行动态链接的ELF的时候,为了优化性能使用了一个叫延时绑定的策略。

这个策略是为了解决 静态编译中要把各种系统API的实现代码都编译进当前ELF文件里,导致文件巨大臃肿的问题。

延时绑定之下,当动态链接的ELF程序中,出现对共享库函数的调用时:

  • 第一次调用时先去查找PLT表中相应的项目,而PLT表中再跳跃到GOT表中希望得到该函数的实际地址,但这时GOT表中指向的是PLT中那条跳跃指令下面的代码,最终会执行_dl_runtime_resolve()并执行目标函数。
  • 第二次调用时也是PLT跳转到GOT表,但是GOT中对应项目已经在第一次_dl_runtime_resolve()中被修改为函数实际地址,因此第二次及以后的调用直接就去执行目标函数,不用再去执行_dl_runtime_resolve()了。

PLT:Procedure Link Table,程序链接表,存储一大堆jmp指令
GOT:Global Offset Table,全局偏移表

PLT和GOT的关系大致如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值