【iOS逆向】某App去混淆

6,873 阅读1分钟

前沿 做为一个身经百战的iOS逆向,如果你没有遇到过混淆,说明你没有深入竞品的核心业务。大厂的核心业务多少都有点防护,是保护自己的一种方式。今天咱分析某盟,只做学习使用。

混淆方式 常见的混淆方式:bcf(虚假块), fla(控制流展开), sub(指令膨胀), Split(基本块分割),这是张总ollvm中的功能,很不错,很佩服能自己写PASS的大佬。但是,也有一些厂商会利用IDA解析的bug去做一些防护:比如故意制造堆栈不平衡,不能F5,或者函数内利用寄存器跳转BR X12,在或者插入一下垃圾指令,导致IDA解析不出来等。

你遇到过吗?

截屏2022-05-16 下午4.36.28.png

截屏2022-05-16 下午4.53.58.png

截屏2022-05-16 下午5.09.48.png

搞定他

  • 1.MonkeyDev下断点

WechatIMG481.jpeg

在运行时,我们是可以知道x12寄存器的值,是一个地址。

  • 2.frida-stalker的使用

frida-stalker我主要用来采集指令的,在运行中,记录真实执行的指令,有了真实的执行指令,在配合IDAPython,在IDA上可以写很多修复脚本。

编写脚本,采集指令,生成指令json文件

WechatIMG482.jpeg

截屏2022-05-16 下午5.40.25.png

3.通过2采集到指令集合,在IDA中执行修复脚本

exec(open('/Users/xxx/Desktop/Uxx/ida_fix.py').read())

效果展示

截屏2022-05-16 下午5.49.38.png

到目前为止,一个代码还原结束。

2.总结

  • 1.找到目标函数的起始点,计算执行步骤数;
  • 2.编写stalker脚本,采集目标函数执行的指令集;
  • 3.编写IDAPython脚本,并在IDA中执行,修复目标函数。

3.附件

联系作者索取