从现有APP实现细节的过程.
砸壳
壳是应用程序加密保护的一种方式,在APP Store上的应用程序都是有加密保护的。
查看是否加壳:otool -l 可执行文件 | grep cryptid
例如:localhost:ivwen.app peilinghui$ otool -l ivwen | grep cryptid
cryptid 1
如果是1表示是加密的.0表示脱壳的。
查看架构:lipo -info WeChat
Non-fat file: WeChat is architecture: arm64
1. 砸壳工具
dumpdecrypted
https://github.com/stefanesser/dumpdecrypted
去 Github 下载 dumpdecrypted 源码, 源码就一个 C 源文件.下载 zip 包之后, 解压.在当前目录, 执行 make 即可完成编译,编译成功后生成 dumpdecrypted.dylib 文件.
iOS 逆向: dumpdecrypted 砸壳记http://www.veryitman.com/2018/06/07/iOS-%E9%80%86%E5%90%91-dumpdecrypted-%E7%A0%B8%E5%A3%B3%E8%AE%B0/
Clutch
https://github.com/KJCracks/Clutch/releases
2.监控工具
通过监控,可以获取界面的变化,文件的读取,网络的传输。
class-dump
对于去壳的应用可以得到所有类的头文件
https://github.com/nygard/class-dump
Reveal
https://revealapp.com/
得到界面UI,得到响应事件。
Snoop-it
https://code.google.com/archive/p/snoop-it/
introspy
https://github.com/iSECPartners/Introspy-iOS
反汇编工具
通过分析二进制文件,生成汇编代码,进而转换成高级语言。
Hopper
IDA
调试跟踪工具
GDB
LLDB
程序功能具体实现
静态分析
应用代码框架构成
动态分析
执行流程参数传递
class-dump -s -S -H WeChat.decrypted -o /Users/lecoding/Desktop/test/WeChatDemo/Headers
WeChat.decrypted : 砸壳后的Mach-o文件路径
/Users/lecoding/Desktop/test/WeChatDemo/Headers: 存储头文件目录
-s sort classes and categories by name
-S sort methods by name
-H generate header files in current directory, or directory specified with -o
-o output directory used for -H
iOS系统安全机制
image list -o -f
打印出iOS中二进制文件,库文件,动态链接文件,栈和堆内存地址的位置全部都是随机的。
iOS越狱
通过一系列iOS系统的漏洞,对系统安全权限进行破解,获取系统Root的权限。
引导式越狱,不完美越狱,完美越狱。
越狱环境的配置
iOS底层的知识储备
Runtime
类与方法
数据存储
UI控件的背后代码执行
整个APP的结构以及构建的过程
手动打包APP模拟Xcode自动打包的过程
Hook的原理
Hook的几种方式
1.Method Swizzle—OC
通过OC的Runtime机制,改变函数的地址来交换方法实现
2.fishHook—–C
通过修改懒加载和非懒加载的表,通过修改表的指针来达到Hook的效果,作用于C函数
3.Cydia Substrate(框架)
针对OC,C函数,或者是函数地址来做Hook操作
Theos
iOSOpenDev
基于Xcode创建模板和编译打包
http://iosopendev.com/download/
参考资料
一条命令完成砸壳http://www.alonemonkey.com/2018/01/30/frida-ios-dump/
书籍:<iOS逆向>