1、越狱
2、安装必备软件
openssl、Darwin CC Tools等
3、解密app
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/XXXXXX/Victim.app/Victim #(要debug的应用二进制文件)
会在当前目录下生成一个.decrypted的文件。
4、分离(这个在电脑上执行)
lipo -remove 去掉设备不用的构架
5、签名(又好像不用)
忘了命令了
6、替换设备上原来的二进制代码包
7、ida分析
电脑上打开那个二进制包,分析很久
(据说ida有远程调试功能,我一直没成功)
8、寻找关键函数,(ida可以找出oc函数)
9、准备远程调试工具debugserver
用xcode调试过设备,设备上应该就有,在/Developer/usr/bin/下面,弄到电脑上来操作
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
</dict>
</plist>
存为entitlements.plist
codesign -s - --entitlements entitlements.plist -f debugserver
传回设备,不要覆盖原版
10、设备端开启调试
debugserver *:1234-a"xxx"#(上面处理过的二进制包)
11、电脑端lldb连接
运行lldb,然后:
processconnectconnect://设备ip:1234
12、找偏移地址(可能要运行两下,刚开始二进制包没加载)
image list -o-f
记下开头的地址
13、打断点
br s-a'(上面的偏移地址) + (ida中找到的关键语句地址)'
运行到断点处
14、查看数据(目前只会查看寄存器)
re r 查看所有寄存器
然后po 地址,如果是oc对象,就直接把内容打印出来了,还可以执行oc语句,如:
po [[UIApplication sharedApplication] delegate]
要是有工具就更好了