iOS越狱: debugserver签名

2018-11-04  本文已影响121人  船长_

一.debugserver重新签名,填加权限

1.把手机的debugserver复制到桌面,所在手机路径如图

path.jpeg

查看ldid有哪些功能

ldid

输出

usage: ldid -S[entitlements.xml] <binary>
ldid -e MobileSafari
ldid -S cat
ldid -Stfp.xml gdb

cd到桌面

cd ~/Desktop/

2.导出原来手机安装的debugserver权限

ldid -e debugserver > debugserver.entitlements

双击打开,可以用Xcode查看其权限,后缀名为entitlements,实际上是plist文件,如图

debugserver.jpeg

这个时候,这个debugserver只能调试通过Xcode安装的App,无法调试其他App,如果想要调试其他App,需要对debugserver重新签名,签上两个相关的权限

3.添加调试其他App的权限

get-task-allow
task_for_pid-allow

如图


authority.jpeg

4.添加好后,给debugserver重新签名

ldid -Sdebugserver.entitlements debugserver

5.验证重新签名后的debugserver是否有刚刚添加的权限

重新导出debugserver权限,给个新的名字new.entitlements

ldid -e debugserver > new.entitlements
newAuthority.jpeg

查看如图,已经添加上

由于手机的Device->Develop->usr->bin目录是只读,所以无法用新签名的debugserver替换原来的debugserver

但是可以把debugserver放在Device->usr->bin目录,因为usr-bin目录已经在环境变量path里面,之前已经操作过

连接登录越狱手机

尝试指令

debugserver

输出

-sh: /usr/bin/debugserver: Permission denied

6.给debugserver添加权限

chmod +x /usr/bin/debugserver

再次输入

debugserver

输出

debugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-340.3.124 for arm64.
Usage:
debugserver host:port [program-name program-arg1 program-arg2 ...]

debugserver /path/file [program-name program-arg1 program-arg2 ...]
debugserver host:port --attach=<pid>
debugserver /path/file --attach=<pid>
debugserver host:port --attach=<process_name>
debugserver /path/file --attach=<process_name>

至此debugserver环境已经搭建好

二.如何让debugserver附加到某个App上???

debugserver *:端口号 -a 进程

*表示主机地址为任意,相当于通配符
-a 相当于attach pid就是进程名称,比如微信的WeChat

三.如何让mac上的lldb连接到手机的debugserver进行调试App?

首先,mac电脑usb与手机的端口映射关系使用vim打开usb.sh

python ~/Documents/iOS/usbmuxd/tcprelay.py -t 22:10010 10011:10011

这样访问电脑上的10011相当于访问手机上的10011
重新连接登录手机
执行转发命令,可以看到有两个端口转发

Forwarding local port 10010 to remote port 22
Forwarding local port 10011 to remote port 10011

使用debugserver执行监听调试微信命令

debugserver *:10011 -a WeChat

输出

debugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-340.3.124
for arm64.
Attaching to process WeChat...
Listening to port 10011 for a connection from *...

现在点击微信上任意按钮,发现微信无法响应

接下来在终端上启动lldb
终端输入

lldb

接着输入

process connect connect://localhost:10011

过了一会约10秒

- Hook 1 (expr -- @import UIKit)
- Hook 2 (target stop-hook disable)
Process 22566 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
 frame #0: 0x0000000182ae8fd8 libsystem_kernel.dylib`mach_msg_trap + 8
libsystem_kernel.dylib`mach_msg_trap:
-> 0x182ae8fd8 <+8>: ret    
libsystem_kernel.dylib`mach_msg_overwrite_trap:
 0x182ae8fdc <+0>: mov x16, #-0x20
 0x182ae8fe0 <+4>: svc #0x80
 0x182ae8fe4 <+8>: ret    
Target 0: (WeChat) stopped.

一旦打印出thread #1, queue = 'com.apple.main-thread,证明监听了WeChat成功了
WeChat程序现在属于断点模式
lldb终端输入指令c,去除断点

c

输出

Process 22566 resuming
上一篇 下一篇

猜你喜欢

热点阅读