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 root@127.0.0.1:/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添加权限的,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.backboardd.debugapplications</key>
<true/>
<key>com.apple.backboardd.launchapplications</key>
<true/>
<key>com.apple.frontboard.debugapplications</key>
<true/>
<key>com.apple.frontboard.launchapplications</key>
<true/>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>com.apple.system-task-ports</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>platform-application</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
</dict>
</plist>
记得要上传到/usr/bin/目录,因为原来的目录是没有写入权限的。
这样远程调试所需的环境就搭建好了。
0x03.进行远程调试
上面把*改为 127.0.0.1不然会提示找不到地址
另开一个命令行进行一下端口转发,
再另开一个命令行,链接上我们转发的端口
链接命令:process connect connect://127.0.0.1:1234