iOS逆向工程从入门到摔门

NekoNekoNiko120 发布于 2025-01-27 12 次阅读


购书建议

首先当然是猴神的《iOS逆向与安全》,然后就是一些汇编的书,比如《ARM汇编语言官方手册》,《汇编语言(第4版)》

学习这些能很快的帮助你学习逆向

练习

https://crackmes.one/找到一个你喜欢的crackme,然后尝试破解它

比如macOS就选择Mac平台,根据处理器架构选择合适的crackme

具体过程和思路

静态分析

找你想要的功能的对应关键字,比如Arcaea的登陆就搜login,找到auth/login

在labels搜不到就去strings里找,点进去xref挨个找,去伪代码看看逻辑,需要改动就用工具自带的nop或者去图形/汇编按n编辑寄存器和返回值,或者简单粗暴点直接改hex

动态调试

主要是类似xor的加密形式代码可读性几乎为0,那就需要动态调试了

用IDA的话界面很直观就不说了

用lldb的话可以看这里打断点,然后输入

po $[寄存器]

来打印寄存器内容

关于Arc的API逆向我也没搞定,还是要找Lost大佬)

可以自己试试实现加密算法

找寄存器

在伪代码界面是看不到寄存器的,要切到汇编/图形界面查看

类似x16的就是寄存器,大概长这样:

图中标黄的x16就是寄存器,前面的一串是地址,ldr是指令

猜labels/strings名

其实很简单,根据功能或应用内显示的英文去搜

比如hash校验的闪退函数就搜exit,具体在Arcaea里是_exit,Arcaea的世界模式就搜world_unlock

当然也不排除labels/strings被混淆的可能,那就要找未混淆的旧版去比较,如果旧版也被混淆了就只能挨个看内容或者动态调试了,在明白函数具体是做什么用的时候最好学会改名,比如hopper/IDA就是按n键打开改名窗口,在IDA里变量名也可以改的(v开头的),hopper不行,建议官方尽早优化

最后

逆向的时候听听音游曲有神奇的帮助