lldb + debugserver 实现对 iOS app远程调试

0x01.unity 和 ios

对于现在的很多游戏引擎来说,平台(ios,Android)都是不重要的,只需要编译的时候选择一下就好了。最后的产物可以说是一块dll(引擎)加上objective C 代码或者 java代码,个人理解。

0x02.搭建lldb + debugserver 远程调试环境

lldb是直接在Xcode里面内置的调试器,lldb是基于gdb的,可以说是gdb的高级版本。下载了Xcode就有lldb,无需配置。

在命令行下输入lldb就可以直接进入lldb的调试环境了

debugserver是在Xcode中的项目安装到真机的时候会自动部署的调试服务脚本,和ida 的 server是很像的

debugserver在真的/Developer/usr/bin/debugserver目录下,

参考ssh 通过usb的方式连接真机,另开端口

scp -P 2222 [email protected]:/Developer/usr/bin/debugserver ./ 

把debug server copy到MAC上

对于拷贝下来的有个问题,debug server默认只能调试自己签名的应用,不能调试第三方已经发布的应用。所以要增加task_for_pid()权限,这里要使用ldid

首先因为ldid不支持胖二进制文件,要先给debugserver瘦身。

lipo -thin arm64 debugserver -output ~/debugserver

这里arm64是ipad air2的架构,其他设备架构不同。


瘦身

然后在同目录下添加一个ent.xml文件,给debugserver添加权限的,内容如下

"1.0" encoding="UTF-8"?>

"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

version="1.0">

   

        com.apple.backboardd.debugapplications

       

        com.apple.backboardd.launchapplications

       

        com.apple.frontboard.debugapplications

       

        com.apple.frontboard.launchapplications

       

        com.apple.springboard.debugapplications

       

        com.apple.system-task-ports

       

        get-task-allow

       

        platform-application

       

        run-unsigned-code

       

        task_for_pid-allow

       

   


1


修改权限,上传

记得要上传到/usr/bin/目录,因为原来的目录是没有写入权限的。

这样远程调试所需的环境就搭建好了。


0x03.进行远程调试


附加进程

上面把*改为 127.0.0.1不然会提示找不到地址

另开一个命令行进行一下端口转发,


端口转发

再另开一个命令行,链接上我们转发的端口

链接命令:process connect connect://127.0.0.1:1234

你可能感兴趣的:(lldb + debugserver 实现对 iOS app远程调试)