要想调试 iOS 设备上的任何程序,需要用到 debugserver + lldb 的方式,可以参考文章一步一步用debugserver + lldb代替gdb进行动态调试进行配置,不再赘述。使用 debugserver + lldb 调试有一个问题就是略麻烦。虽然有一些插件简化了调试的步骤,如:SpringBoard tweak 双击图标启动debugserver,但使用终端调试,脱离Xcode总有些不爽。macOS 上,Xcode 是可以直接使用 root 权限调试进程的,但是 iOS 上不支持。能不能让 Xcode 也支持使用 root 权限调试应用或者进程呢?如果可以,那么使用人人都熟悉的 Xcode 进行调试岂不是舒服?使用 Xcode 调试 iOS 上的程序时,是使用mobile用户启动/Developer/usr/bin/debugserver来对进程进行附加或者其他操作。如果能将/Developer/usr/bin/debugserver替换为修改过的debugserver就好了。可惜/Developer/usr/bin/debugserver是放在一个只读磁盘上的,无法对它进行任何操作。换个角度,如果知道是哪个进程启动了/Developer/usr/bin/debugserver,在它启动之前将debugserver的路径替换成修改过的debugserver路径也可以达到目的。在使用Xcode调试应用时可以看到新增一个debugserver进程,它的启动参数如下:可以看到 lockdown 字眼,谷歌了一下,找到一篇文章usbmux原理以及PeerTalk源码解析,里面有这么一段话:三方软件读取ios设备相册, iTunes备份iPhone,Xcode真机调试, Xcode若要执行真机调试,首先需要和lockdown服务通信,发出启动调试请求,lockdown收到请求以后,启动iOS端对应的调试服务(debugserver),然后Xcode便与debugserver之间建立了通信连接。于是基本确定启动debugserver的目标就在提供lockdown服务的lockdownd守护进程中。经过分析,发现在lockdownd中是使用SMJobSubmit函数来提交启动/Developer/usr/bin/debugserver进程的。启动参数如下:知道上面的信息后,事情就简单了,通过hookSMJobSubmit函数,在需要启动/Developer/usr/bin/debugserver时将其替换成自定义的debugserver路径,同时把UserName改成root,就可以达到让Xcode使用root权限调试任意进程的目的。最后根据上面的思路,写了一个Tweak,代码在 这里。Cydia 源:1f2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5k6i4m8G2i4K6u0W2j5Y4W2@1k6h3q4Y4k6g2)9J5k6h3y4G2L8b7`.`.。
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-273471.htm
[原创]让 Xcode 支持使用 root 权限调试 iOS 设备上的任何应用或进程
423 浏览
6 回复
不错 支持 省事了
mark 学习了
学习一下
已经支持 rootless
vsasm
已经支持 rootless
大佬 巨魔注入任意ipa 这种方式支持不
已经支持 rootless
大佬 巨魔注入任意ipa 这种方式支持不
阿钟wilsion
大佬 巨魔注入任意ipa 这种方式支持不
巨魔没用过,如文章所说,原理是要 hook 系统进程 lockdownd,如果巨魔能实现,应该就可以用
大佬 巨魔注入任意ipa 这种方式支持不
巨魔没用过,如文章所说,原理是要 hook 系统进程 lockdownd,如果巨魔能实现,应该就可以用