iOS逆向的一点总结

547 阅读2分钟

一张图

之前在www.iosre.com/ 上看到的,我觉得整个学习思路非常清晰:

![](https://pic1.zhimg.com/80/v2-aeaa2675b628f94e8815ffc38b0f0498_720w.jpg)

一些常用的工具

  • 砸壳:越狱市场/clutch/dumpdecryted

  • 加壳:对可执行文件的编码进行改变/加密/压缩,达到保护程序代码的目的。App Store下载的ipa包是会加壳的

  • 脱壳/砸壳:将未加密的可执行文件还原出来

  • 头文件:class-dump/MonkeyDev

  • class-dump:将Mach-O文件的.h导出。对Mach-O文件操作

  • 界面分析:reveal,cycript,lldb+chisel,MachOView

  • cycript:可以调试、修改正在运行的app

  • reveal:没了解过逆向的同学应该也知道,但是看身边的开发,用的人其实并不多,个人觉得利用好这个工具对开发效率提升非常显著,特别是对某些组件或者代码并不熟悉的时候,能快速定位view所在的文件及层级结构

  • 架构分离:lipo

  • 通用二进制文件:同时使用多种架构的二进制文件。导出特定架构的独立的二进制文件

  • 静态分析:hopper,ida

  • 将Mach-O的机器语言反编译成汇编代码、OC伪代码 or Swift伪代码

  • 动态调试:lldb,debugserver

  • 对运行中的app进行调试,设置断点、控制流程等

  • 插件开发:Theos-tweak(越狱机直接打包/发布插件即可,非越狱机产出dylib,注入动态库/重签名、打包发布)

  • Theos:越狱开发工具包

  • 重签名:ldid,GUI-iOS App Signer(非越狱机需要)

  • 涉及签名机制:可执行文件一旦破坏,如果需要重新安装就要重签名

  • 动态库注入:insert_dylib(非越狱机需要)

  • theos开发插件时,需要tweak依赖的动态库进行注入,动态库也要重签名

最后有什么疑惑问题这有个iOS交流群:642363427有一个共同的圈子很重要,结识人脉!里面都是iOS开发,全栈发展,欢迎入驻,共同进步!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)