iOS逆向入门:从越狱到class-dump和Frida工具链
安卓逆向搞多了,转 iOS 逆向需要换一套工具链。一、越狱和环境
iOS 逆向需要越狱设备。目前推荐用 palera1n 越狱(A9-A11 芯片)或 Dopamine(A12-A16)。越狱后装 Cycript、Frida、SSH。
二、工具链
[*]class-dump:导出 App 的 Objective-C 头文件。ipa 解包后用 class-dump dump 出所有类和方法签名
[*]Hopper/IDA:反编译 Mach-O 二进制。Hopper 对 Objective-C 支持好,IDA 更全
[*]Frida:动态 hook。iOS 上 Frida 用法跟安卓类似,hook Objective-C 方法
[*]Cycript:运行时修改和检查 Objective-C 对象。比 Frida 更贴近 OC 语法
[*]Charles/mitmproxy:抓包。需要绕过 SSL Pinning
三、Objective-C hook
// hook OC 方法
var cls = ObjC.classes.YourTargetClass;
Interceptor.attach(cls['- yourMethod:'].implementation, {
onEnter: function(args) {
console.log("method called");
},
onLeave: function(retval) {
console.log("return: " + retval);
}
});
四、Swift 逆向
Swift 比 OC 难。Swift 方法名在编译时会被 mangled(符号修饰),需要 demangle 才能看懂。Frida 对 Swift 的支持不如 OC 好,有时候要直接 hook assembly。
https://www.metk.cn/img/posts/ios_reverse.jpg 这个思路让我想到另一个场景,回头试试能不能套用。 这篇干货,比那些只有命令没有解释的强太多了。 有个坑提醒,不同厂商ROM差异很大,通用性没有想象中那么强。 步骤写得很清楚,跟着走了一遍,卡在第二步的环境配置上,后来装了老版本才好。 收藏了,最近正好要搞这块,省了不少翻文档的时间。 同意楼主的判断,现在加固手段越来越多,纯手工成本太高了。 楼主有没有遇到过反调试?我这边一挂调试器就直接退出。 实战出来的经验和文档里写的完全是两码事,楼主这个很真实。 有个细节,日志记得清掉,不然很容易被发现。