iOS逆向 | 如何通过LLDB实现动态调试

Xcode动态调试的原理

Xcode动态调试的原理,涉及到两个工具,LLDB以及debugserver。
debugserver一开始存放在 Xcode里面,当 Xcode识别到手机设备时, Xcode会自动将 debugserver安装到 iphone上,然后通过LLDB与debugserver的交互,来实现真机动态调式。

如何做到动态调试任意APP

手动给任意APP增加debugserver,使用终端的LLDB与之交互。

实现流程

1.连接越狱的手机。
2.使用iFunBox在/Developer/usr/bin的目录下找到debugserver,拖到桌面。
3.打开终端,进入桌面路径,使用以下命令导出权限。

ldid -e debugserver > debugserver.entitlements

4.使用Xcode打开debugserver.entitlements,增加两条新的权限。

get-task-allow
task_for_pid-allow

image.png
5.新增权限后,需要使用以下命令重新签名,然后将已经签好权限的 debugserver放到/usr/bin目录,便于找到 debugserver指令。

ldid -Sdebugserver.entitlements debugserver

6.登录到手机root环境,通过以下指令,让 debugserverp附加到某个APP进程,端口号自定义,进程是监听APP的进程ID或名称。

debugserver *:端口号 -a 进程

7.新开一个终端窗口,启动LLDB,远程连接 iphone上的 debugserver。

// 输入lldb,启动lldb
lldb
// 远程连接debugserver
process connect connect://手机IP地址:端口号

8.连接成功后,监听的APP属于断点状态,使用LLDB的C命令可以让程序继续运行。

补充说明

1.默认情况下/ Developer/usr/bin/ debugservert缺少ー定的权限,只能调试通过 Xcode安装的APP,无法调试其他APP,如果希望调试其他APP,需要对 debugserverg重新签名。
2.配置过程中,我遇到的问题已写入<iOS逆向 | 动态调试常见问题>一文中,请自行翻阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值