安卓X60加固逆向小结

X60加固分为前期反调试和后期反调试,前期反调试是保护释放到内存含有native化函数的dex文件和解析器so【含加密的解析器so和解密函数】。前期反调试的位置在jniOnload下的反调试函数case31中的 BLX LR下断,就可以得到各个反调试的位置。
要得到内存的dex,在过完前期反调试后,直接F9再,Ctrl+S,从下往上搜索就能找到dex035,用脚本dump下来就行。
加密解析器so,可以通过静态分析libjiagu.so,在string窗口搜索init,通过交叉引用就可以找到初始化函数,然后再在string窗口搜索*.so ,然后Tab键转换成伪代码,看看是哪个函数之后调用了解析器so的初始化函数。
在这里插入图片描述
在这里插入图片描述
后期反调试是出现在动态注册过程中,在注册完成mark2和mark3后,就会进入debug080区域,这个区域有反调试逻辑,反调试逻辑的模式:

SUBS R0, R1, R0
ITTT EQ <------------------------------也可能是(IT+N个T) EQ

进入debug080区域,需要单步F7进行调试,到达调用加密的指令数据区前,会有两个这种反调试。在R0寄存器看到调用的加密区域,且后面有ORR的解密标志,就能确定该位置是解密逻辑。之后按照dex文件格式重新将解密区重连接,就可以完成dex修复。

如何知道目标类位于哪个class_def数组呢?通过dex分析,可以知道目标函数所在的method_id,通过010工具的dex解析模板就可以定位该函数,展开后可以看到class_id(这里以0x2bc举例),然后展开头文件,找到class_def_off是多少,在010工具搜索BC02 ,搜索结果的地址第一个大于class_def_off的就是要找的类(这里以mainactivity举例) 在dex_class_def数据区中的起始地址。
用这个地址减去class_def_off 得到的值除以32 【每一个dex_class_def的数组成员由32个字节组成】就可以得到mainactivity是dex_class_def数组中的第几个数组成员。

最后,将配置文件和应用无效类的函数修改即可完成修复。
【详细内容可查看 底层化函数还原

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脱壳潜行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值