首页
社区
课程
招聘
[分享]iOS动态调试任意APP
发表于: 2023-1-12 23:48 22646

[分享]iOS动态调试任意APP

2023-1-12 23:48
22646

动态调试的配置过程

工具 :Xcode + LLDB + debugserver

一、Xcode动态调试 -> debugserver

图片描述

 

当通过Xcode运行我们的项目时,系统会自动安装好debugserver

 

debugserver 在mac中的位置 :

1
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/13.5/DeveloperDiskImage.dmg//DeveloperDiskImage/usr/bin/debugserver

debugserver 在iPhone中的位置 :

1
/Developer/usr/bin/debugserver

图片描述

 

此时的debugserver只能调试通过Xcode安装的APP,并且只有可读权限。那么要让lldb通过debugserver调试其他来源下载的APP该怎么操作呢?

二、终端动态调试 -> debugserver

图片描述

 

导出 debugserver 到mac本机,导出他的xml文件,然后再去查看下他的权限都有哪些。

1
ldid -e debugserver > debugserver.entitlenments

图片描述
正常情况下这种错误不会出现,可能是版本的原因,导出的文件有点问题,先解决下这个错误,如果没有报错,这一步直接忽略。

 

查看代码我们发现,这个文件的内容出现了重复,删除重复的,重新打开。
图片描述
打开文件可以查看到此问题的权限有哪些。
图片描述

 

现在我们要给文件添加权限,然后通过ldid 重新签名(用codesign也行)
方法这里提供2种方式:
1.添加 get-task-allow、task_for_pid-allow
2.找到一个权限最多的文件,重新签名到debugserver 上。

 

第一种方式添加后的效果:
图片描述

 

第二种方式:
我用了SpringBoard的可执行文件。我们导出他的签名权限,看看效果。

1
ldid -e SpringBoard > SpringBoard.entitlements

图片描述
打开后会发现有很多行,密密麻麻。

 

然后重新签名

1
2
3
4
方法一:
ldid -Sdebugserver.entitlements debugserver
方法二:
ldid -SSpringBoard.entitlements debugserver

然后将重新签好权限的debugserver文件放到手机的 /usr/bin目录。

手机上附加到任意的APP的进程中

1
2
3
4
5
iPhone-2:~ root# debugserver localhost:10011 -a recipe
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-900.3.104
 for arm64.
Attaching to process recipe...
Listening to port 10011 for a connection from localhost...

mac终端lldb与debugserver建立连接

1
2
process connect connect://127.0.0.1:10011
#本地做了端口映射,所以也是127.0.0.1 ,没有此操作的填写手机的IP

成功的效果。剩下的是lldb的调试命令,不在赘述。
图片描述


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2023-1-13 10:05 被西贝巴巴编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 417
活跃值: (531)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
https://github.com/lemon4ex/XcodeRootDebug
2023-1-13 13:10
1
雪    币: 3535
活跃值: (31016)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2023-7-16 23:29
1
雪    币: 200
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是否需要越狱设备?
2024-9-24 10:05
0
雪    币: 20
活跃值: (246)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
/Developer/usr/bin/debugserver   手机里 找不到啊?
2024-11-11 00:17
0
游客
登录 | 注册 方可回帖
返回
//