美文网首页
lldb调试三方应用+debugserver配置

lldb调试三方应用+debugserver配置

作者: May_Dobin | 来源:发表于2018-12-27 17:01 被阅读20次

一.媒介debugserver

Xcode之所以可以通过lldb调试我们的App,是因为媒介debugserver,它负责接收lldb指令,然后将lldb指令给到app,最后app将结果通过debugserver传给lldb,反馈到我们的Xcode调试界面。

二.查看debugserver

默认手机位置是/Developer/usr/bin ,但是通过终端连接手机时,查看目录发现并没有 debugserver 文件-----what????
别急,这是因为你的手机没有使用Xcode进行调试过,当手机第一次连接到Xcode,通过Xcode-->Window-->Device ,用你的越狱手机调试(lldb)程序的时候,才会将debugserver从你的/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/9.1/DeveloperDiskImage.dmg/usr/bin/debugserver安装到你的手机/Developer/usr/bin/ 目录下:

你随便调试一个程序后,就会在/Developer/usr/bin/ 目录下看到debugserver,但是此时的debugserver因为缺少task_for_pid权限还是不可使用,通过Xcode安装的debugserver,只能调试自己的app,要想逆向调试别人的app,就需要修改debugserver权限。

三.更改debugserver权限

1.首先将iPhone中的debugserver通过iFunbox复制到电脑。
2.通过MachOView,可以看到这是个胖二进制文件

image.png

3.瘦身
由于debugserver是个胖二进制文件,我的越狱手机是iPhone5s是arm64架构的,我们只要保留arm64,使用如下lipo命令:

lipo -thin arm64 ./debugserver -o ./debugserver_arm64

再次通过MachOView查看

image.png

4.给debugserver增加task_for_pid权限
通过ldid查看原来权限

ldid -e ./debugserver
image.png

将旧的权限输出到entitlement.plist文件

ldid -e ./debugserver > ./entitlement.plist

entitlement.plist增加一个task_for_pid-allow

image.png

重签名debugserver
将改好的entitlement.plist重签debugserver

ldid -Sentitlement.plist debugserver

再次查看debugserver权限确认如下图所示即为添加成功

image.png

5.将debugserver放回手机
现在的debugserver已经可以调试其他app,这个时候需要注意两点:
a./Developer/usr/bin目录下的debugserver是只读文件,无法替换。

scp: /Developer/usr/bin/debugserver: Read-only file system

b.为了方便我们使用命令行操作方便,直接将debugserver拷贝到/usr/bin/目录下。

 scp -P 12345 debugserver root@localhost:/usr/bin

查看权限 :

image.png

如果没有执行权限,请自行添加

chmod +x debugserver

此时登录手机-终端输入

debugserver

出现如下图,即为添加成功


image.png

四.调试程序

1.通过USB连接手机,首先要做端口映射,使电脑能正常通过对应端口连接电脑:

iproxy 1111 1111

2.登录手机,开启debugserver

debugserver *:1111 -a "WeChat"

其中* 代表当前设备, 1111 端口号, -a 添加, "WeChat" 想要附加的程序名称
3.电脑终端输入lldb,然后连接手机

process connect connect://127.0.0.1:1111

process connect connect://localhost:1111

使用下面命令附加进程(先启动想要附加的APP),开启port端口,等待来自IP的mac上的lldb接入

连接后,即可使用lldb调试三方App。

lldb 状态下进入断点命令:

process interrupt

相关文章

网友评论

      本文标题:lldb调试三方应用+debugserver配置

      本文链接:https://www.haomeiwen.com/subject/kdgrlqtx.html