调试可以用
- Monkeydev (可调试 hook 、class-dump头文件、重签名等)
- CrackerXI、class-dump (砸壳)
- Hopper Disassembler (静态调试)
- LLDB、frida-trace、dtrace (砸壳)
- Flex、Reveal2Loader 查看UI层次结构
- Flex3 (APP插件,可以自己制作,也可以下载云端的)
- frida-trace
官网 https://frida.re/docs/installation/
有安装说明,和 frida-trace使用说明
// mac 端查看当前正在运行的进程
ps -e | grep QQ
frida-trace -m "-[NSView drawRect:]" Safari
frida-trace -m "-[DMTrialController *]" QQ
frida-trace -m "-[SMEnterLicenseViewController loadView]" -p 61004
frida-trace -m "-[* terminate:]" AirServer
- lldb调试
- 导出手机中的debugserver 更改权限
// 导出到mac电脑的用户目录下 ~
scp root@192.168.40.155:/Developer/usr/bin/debugserver ~/
- debugserver瘦身(非必要)
// 查看支持的架构
lipo -info debugserver
// 运行命令瘦身只保留arm64 (arm64:测试机8P,armv7s:5、5C...)
lipo debugserver -thin arm64 -output debugserver_arm64
- 重签名需要的plist文件,复制保存为ent.plist
<!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>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
<key>run-unsigned-code</key>
<true/>
</dict>
</plist>
- debugserver增加权限get-task-allow和task_for_pid-allow
// 可以查看权限信息
codesign -d --entitlements - debugserver_arm64
// 签名权限
codesign -f -s - --entitlements ent.plist debugserver_arm64
// 或者简写为
codesign -fs- --entitlements ent.plist debugserver_arm64
// 除了codesign也可以用ldid签名
brew install ldid
// 先导出原来的权限,然后xcode打开可以修改添加get-task-allow和task_for_pid-allow 如下图
ldid -e /Path/debugserver > debugserver.entitlements
// 改完重签回去
ldid -Sdebugserver.entitlements debugserver
image.png
把已经签好权限的debugserver(debugserver_arm64可以重命名了)放到手机的/usr/bin/目录
debugserver 使用
// 手机端,10010是自定义的端口号
debugserver *:10010 -a Thor
电脑端,终端输入lldb
// 连接debugserver服务
process connect connect:手机IP:10010
// 使用lldb的c命令让程序先继续运行
c
// 通过debugserver启动APP
debugserver -x auto *:端口号APP的可执行文件路径