因为工作需要大致分析下逆向思路来做一些常识,所以就记录了此文。主要用于未来自己的一个回顾和想法迭代。
一般来说逆向工程我们逆向的是里面的可执行代码,资源都是可以直接解压开的。而逆向的基本结构则是Mach-O文件(Mach Object文件)
主要结构是:
Header(头文件,架构类型等)
Load Commands(描述文件在虚拟内存中的结构和布局)
Raw Segments Data(在Load Commands的Segments原始数据)
我们知道大概结构之后就有了逆向思路。
分析工具:
Cycript、Reveal
用作界面分析
class-dump
可以根据Mach-O文件的运行原理,获得其所有头文件结构。有了头文件结构,大概可以分析出应用的整体结构。
http://stevenygard.com/projects/class-dump/
MachOView
可以查看Mach-O的工具
https://github.com/gdbinit/MachOView
dumpdecrypted
在Appstore上下的应用都被加密过了,要获取头文件都要先砸壳。砸壳,需要用到dumpdecrypted
https://github.com/stefanesser/dumpdecrypted/
Hopper Disassembler
根据class-dump的头文件结构,来分析对应的二进制文件。
https://www.hopperapp.com/
debugserver、LLDB
用作动态调试分析,对运行中的 APP 进行代码调试
代码编写后,注入代码到 APP 中,还需要 重新签名、打包ipa等。
大佬的实战细节操作:
https://www.jianshu.com/p/78de4edeee39
更细节的东西可以参考下其他大佬的博客:
http://www.swiftyper.com/
网友评论