LLDB连接的教程网上有很多,本文主要记录LLDB连接过程中的一些问题
前置条件
1、越狱设备一台(iPhone6s iOS12.1.2)
2、脱壳App若干(Wechat、Mirror、VlogNow)
3、usbmuxd-1.0.8
实战
1、SSH的USB连接--usbmuxd
2、配置debugserver
3、debugserver的开启与LLDB的连接
其中第三步这边遇到了一些问题,这边详细操作一波。
debugserver的开启与LLDB的连接的大致思路
1、手机端终端指定app及端口(1234)监听连接(Mirror第三方app包名)
iphone6s-test:~ root# debugserver 127.0.0.1:1234 -a Mirror
debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-900.3.86
for arm64.
Attaching to process Mirror...
Listening to port 1234 for a connection from localhost...
2、打开一个新的终端,使用usbmuxd的tcprelay.py映射手机端口和mac端口(python-client为usbmuxd子目录)
XXX-Mac:python-client ABC$ ./tcprelay.py -t 1234:1234
Forwarding local port 1234 to remote port 1234
Incoming connection to 1234
Waiting for devices...
3、再打开一个新的终端,进入lldb模式执行process connect connect://127.0.0.1:1234
(lldb) process connect connect://127.0.0.1:1234
- Hook 1 (expr -- @import UIKit)
- Hook 2 (target stop-hook disable)
Process 13686 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
frame #0: 0x000000018d77bea4 libsystem_kernel.dylib`mach_msg_trap + 8
libsystem_kernel.dylib`mach_msg_trap:
-> 0x18d77bea4 <+8>: ret
libsystem_kernel.dylib`mach_msg_overwrite_trap:
0x18d77bea8 <+0>: mov x16, #-0x20
0x18d77beac <+4>: svc #0x80
0x18d77beb0 <+8>: ret
Target 0: (Mirror) stopped.
如果你看到上述log,那么恭喜你,连接成功。执行image list -o -f
试试。
采坑回放
1、查看第三方app包名,这个目前没有找到什么好的方式。用了蠢方法,在越狱设备上打开目标app。执行ps -e 查看当前进程信息。
13543 ?? 0:59.53 /var/containers/Bundle/Application/1136DE04-DFE8-432A-8DDE-62A8155DDEE6/Mirror.app/Mirror
。当然了,你也可以直接将ipa解压,然后看Payload里面可执行文件的名称
2、Segmentation fault: 11 问题
iphone6s-test:~ root# debugserver *:1234 -a "VlogNow"
debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-900.3.86
for arm64.
Attaching to process VlogNow...
Segmentation fault: 11
谷歌了一下,说是对应app设置了ptrace反调试。