iOS逆向学习笔记

最近买了庆总的《iOS应用逆向与安全》,学习过程中,记录下自己的总结,以后忘了好方便来查。。。(强烈建议买一本回去读,能够系统性的学习逆向方面的知识。如果基础不够可以再买一本狗神的小黄书《iOS应用逆向工程》

逆向了解

通过越狱获取手机的root权限后,访问整个手机的文件系统,编写动态库注入到指定的应用中。

基础了解

通过Mac端的iFunBox了解iPhone的文件系统(或者iPhone的越狱商店的iFile)

逆向流程(自己通过学习实践总结的,可能会有遗漏。。。)

  1. reveal静态分析界面, Cycript动态分析界面
  2. 获取应用安装包,解密应用,class-dump出头文件
  3. 根据以上两点,找到函数的大概或者具体位置后,hook函数相关的类,打印函数执行的信息来验证函数。
  4. 找到具体函数后,将软件的可执行文件放入hopper或者ida中进行静态分析函数执行逻辑。
  5. 通过lldb以及上个步骤获取到函数的文件偏移地址,对APP进行动态调试,打印函数参数等信息
  6. 根据4和5来分析函数后,想好如何修改函数逻辑。
  7. 通过Theos编写hook代码,打包成dylib动态库。
  8. (越狱)将动态库直接安装到越狱手机中(通过DYLD_INSERT_LIBRAPIES配置环境变量)
  9. (非越狱)修改APP二进制的Load Commands,将7打包好的动态库放入到APP安装包中,对APP二进制以及APP中的动态库进行重签名后,安装到非越狱手机中