debugserver
ref: https://book.crifan.org/books/ios_re_debug_debugserver_lldb/website/debugserver/
安装原版debugserver:在设备连接过一次Xcode
,并在Window
->Devices
中添加此设备后,debugserver
才会被Xcode
安装到iOS
的/Developer/usr/bin/
下(该路径没在系统PATH下,不能直接调用debugserver,需要全路径)
修补debugserver(不修补的没法正常调试其它app):
# ssh 端口映射
iproxy 2222 22
# 复制到mac
scp -P 2222 root@127.0.0.1:/Developer/usr/bin/debugserver ./
# 创建entitlements
nano debugserver.entitlements
加入如下内容
<?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>com.apple.backboardd.launchapplications</key>
<true/>
<key>com.apple.backboardd.debugapplications</key>
<true/>
<key>com.apple.frontboard.launchapplications</key>
<true/>
<key>com.apple.frontboard.debugapplications</key>
<true/>
<key>com.apple.private.logging.diagnostic</key>
<true/>
<key>com.apple.private.memorystatus</key>
<true/>
<key>com.apple.private.cs.debugger</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
<key>run-unsigned-code</key>
<true/>
</dict>
</plist>
# 重新签名
codesign -f -s - --entitlements debugserver.entitlements debugserver
# 复制回iphone的/usr/bin/目录下
scp -P 2222 ./debugserver root@127.0.0.1:/usr/bin/
iproxy 2222 22
:端口转发ssh -p 2222 root@127.0.0.1
:执行后进入到iphone命令窗口debugserver -x backboard *:1234 /path/to/app/executable
:先启动进程然后注入,注入后会挂起进程./debugserver *:1234 -a "YourAPPName"
:注入已运行进程iproxy 1234 1234
lldb
(执行后进入lldb命令窗口)platform select remote-ios
process connect connect://localhost:1234
q1c
:继续运行r
:重启si
:指令级步入ni
:指令级步过finish
:退出子函数breakpoint set -a 0x012345
:在函数地址下断dis -a 0x12345
:从某地址开始反汇编dis -a $pc
:从当前欲要执行地址开始反汇编image list
:获取执行文件基址image list -f -o WhatsApp
:增加过滤选项command srcipt import pyFilePath
git clone https://github.com/snare/voltron.git
cd voltron
./install.sh
:这里执行之后会返回一个entry path,稍后会用到lldb
command srcipt import {entry path}
:entry path 就是上面的,执行之后会显示voltron loaded
voltron init
voltron view register
:显示寄存器窗口q2voltron view stack
:显示堆栈窗口q2voltron view disasm
显示汇编窗口q2voltron view backtrace
:显示调用栈q2platform select remote-ios
process connect connect://localhost:1234
q1error: rejecting incoming connection from ::ffff:127.0.0.1 (expecting ::1)
Exception getting memory from debugger: NameError("name 'xrange' is not defined>
https://github.com/jonasmr/voltron.git
3声明:转载请注明出处,原文地址:shlu's note