购书建议
首先当然是猴神的《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不行,建议官方尽早优化
最后
逆向的时候听听音游曲有神奇的帮助
Comments NOTHING