移动端Hook技术:从编译到运行的全生命周期应用和案例

大家好,为了能与开发者们共同进步,我们今年会新增一个技术专栏,持续分享SDK、前端、数据等相关内容。希望可以和大家一起深入探讨,共同进步。今天来跟大家分享终端Hook技术。终端上的Hook技术从编译/构建阶段到应用进程内运行时,再到操作系统底层,种类多种多样。如静态编译期间的ASM、Javassist、AspectJ等,运行期间的ART/Dalvik虚拟机Hook、GOT/PLT Hook、Inl...
摘要由CSDN通过智能技术生成

b3e2a21b5c0adc4c4eee6381f7c5a6e0.gif

4ef8150e3d2c928b21817e337989e6a1.png大家好,为了能与开发者们共同进步,我们今年会新增一个技术专栏,持续分享SDK、前端、数据等相关内容。希望可以和大家一起深入探讨,共同进步。

今天来跟大家分享终端Hook技术。


终端上的Hook技术从编译/构建阶段到应用进程内运行时,再到操作系统底层,种类多种多样。如静态编译期间的ASM、Javassist、AspectJ等,运行期间的ART/Dalvik虚拟机Hook、GOT/PLT Hook、Inline Hook等等。

目前友盟+SDK使用Hook技术主要应用于UAPM、反作弊和合规场景中。

HOOK是什么?

Hook又叫“钩子”,是一项历史悠久的技术。早在PC时代,Hook技术就已存在,并和反Hook技术不断相互促进和迭代。在移动端,Hook技术最早应用于安全领域,后续随着移动端发展慢慢也应用和渗透到了其他业务领域。

Android平台Hook技术比较复杂且多样,下面是从App编译/构建期间到上线运行时整个生命周期为线索,汇总和梳理目前不同方式的Hook技术。

d4d0bf65e73a6d3d361dacceab528dfa.jpeg

从编译阶段将源码编译构建成目前产物(如.apk),到运行时阶段从应用层->Framework层->Native层+Runtime层->linux+kernel层。整个流程中涉及到的Hook技术切点。比如编译期hook(静态hook)、运行时hook(动态hook)、java层hook、native层hook甚至系统层hook。

Hook应用场景

在移动端,Hook的应用场景多种多样,这里列举几个SDK业务涉及的应用场景。

APM启动监控中的插桩实现-利用ASM方式实现的hook

实现效果

Hook技术应用到APM启动分析中,通过ASM方式实现启动监控中的代码插桩。

使用Hook技术前,需要手动埋点方式实现启动分析,埋点代码如下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值