研究appdome是论坛里的一个朋友说一个国外保护软件比较有意思,我觉得也许会有些新奇的发现,所以就尝试下,当然最终我也没有完全分析出来保护的点(appdome的保护点是非常分散的),但是已经达到我自己的目标,我觉得基本上跟踪到了appdome的整个保护执行函数流,接下来只需要针对性应对即可。
我搜索了下,国外厂商appDome的保护强度应该是非常高的,网上的研究资料非常少,纯静态分析他的ida逆向结果只会让你迷失崩溃,几乎看不到多少有意义的函数,大量的函数都被混淆重命名,当然字符串也是混淆的。
这个修改包我主要是跟踪的非主线程(采用的慢速记录方法,appdome保护应该主要集中在非主线程,所以应该足够了),而且我跟踪主线程崩溃了,也没看到错误,我不知道为什么,有时间可能继续研究。不过我不清楚他的完整保护逻辑究竟是什么,如果真的是重定向了主程序的所有系统调用,那么直接跟踪无论是否可行,效率都是个大问题(不过有一点比较庆幸的就是可能是手机系统的缘故,appdome可能依然没有使用imazing那种极高计算复杂度的保护,用户体验才是最重要的,当然也可能是我还没有逆向到)。
因为我没有使用调试器,也没有越狱,所以这些检测我不需要过,当然如果你是frida远程调试就比较麻烦,因为它有大量的反调试就是针对frida的。至于ipa包方法细节,我还是拷贝一下我另外一个文章的,反正都差不多:
下面是这个方法的一些简介(也适用于其他的日志记录包):
通过修改相应程序的ipa应用包,制作了自定义的插桩工具进行静态二进制重新静态JIT(当然大部分情况下只是记录一些关键函数调用,JIT主要是为了实现透明化无干扰跟踪,平时大家用的一些模拟执行unidbg之类的工具就是完全透明无干扰,当然如果不算执行效率的话,因为这太慢了),使其在运行过程中能够自动记录关键函数调用和参数。IPA 使用 Sideloadly 等方式安装,运行后生成的日志文件可以直接在 macOS 的 Finder 中访问(例如:log_0x0_0x0.txt、log_0x0_0x0_259.txt 等)。
log_0x0_0x0.txt
log_0x0_0x0_259.txt
单次运行可分线程记录 约 800 万条 函数调用日志
捕获底层函数调用的详细信息
日志为共享文件,可直接导出分析
打印函数入口参数(不需要提前指定参数类型和数量,采用贪心算法深度搜索x0-x6寄存器指针)
每一条日志记录包括:
时间戳
栈指针(可用于推断调用深度)
函数地址(PC),可与 IDA 中地址对应,这里记录的是LR寄存器的值
线程 ID(可按线程整理调用序列)
函数参数(主要是可见字符串)
对于不可见或加密参数,以 <x> 加 hex 表示
<x>
ipa下载包链接(我的手机是iphone x 6.7.12 非越狱 其他机型未测试):
1caK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1M7X3W2$3k6g2)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6h3y4G2L8g2)9J5c8X3k6A6L8r3g2Q4x3V1k6V1i4K6u0r3x3g2)9#2k6U0g2$3e0V1N6j5K9$3k6q4h3f1&6W2k6Y4A6S2g2W2u0k6P5s2N6I4k6W2u0U0L8U0p5J5f1$3b7K6x3f1E0Q4x3V1k6$3K9h3g2%4i4K6y4r3N6i4y4H3i4K6y4p5k6s2u0A6N6X3g2Q4y4h3k6D9K9h3&6C8
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
啊你好哇123 800万条记录要跑很久吗?对于cpu不好的