IDAPython脚本分享 - 自动在.preinit_array .init .init_array下断点

自动在.preinit_array .init .init_array下断点

脚本背景
  • 在Android逆向的过程中,一个很常见的场景就是我们需要分析So模块的init函数(很多加固方案初始化的地方),每次我们使用IDA进行调试的时候,都要手动的找一次 linker 中调用init函数的位置,重复又麻烦,于是就用脚本把这个相对固定的过程用IDA Python脚本固化下来,提高效率,顺便跟大家分享一下。
脚本使用注意事项
  • IDA载入分析 linker 完毕之后(实时附加调试的时候,可以在IDA切换到这个模块)
  • 开发测试环境为Nexus 5X AOSP 6.0.0_r1
脚本思路
  • 通过阅读 linker 中dl_open 相关源码可知,当So模块被加载重定位完毕之后,各类初始化函数会被调用,因此,直接在IDA中参考引用这些字符串即可找到关键的下断点的位置,这里主要参考三个字符串:

    1. DT_PREINIT_ARRAY
    2. DT_INIT
    3. DT_INIT_ARRAY
  • 在这些字符串被引用的时候,也就是对应初始化函数被调用的时候,因此直接在引用处下断点,即可开始分析相关初始化函数

思路总结
  • 通过阅读对应部分源码,然后结合 IDA反汇编结果,先手工在IDA里面找一遍,然后考虑结合实际的一些特征值,配合 IDAPython API来进行脚本自动化 ~..~
脚本源码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值