看雪论坛
发新帖

[分享]Xcode 调试设备应用

丶来年花落 2016-10-9 14:28 2423
在iOS 设备上(iPhone、 iPad等)调试比如微信、支付宝等别人家的应用的时候,用lldb 可以进行调试,但是lldb 蛋疼的命令行让人很不爽,所以尝试用Xcode attach 现有应用进行调试

Code signing Entitlements中有一项很重要的key值,就是get-task-allow,作用如下:

get-task-allow, when signed into an application, allows other processes (like the debugger) to attach to your app. Distribution profiles require that this value be turned off, while development profiles require this value to be turned on (otherwise Xcode would never be able to launch and attach to your app).

也就是说,get-task-allow决定了这个app能否被Xcode调试。一般来说,上架了的程序,这个key值为空,默认为NO。

真机上的app,若不是自己build进去的,基本没有调试的权限。原因在于get-task-allow没有开启。若要开启,步骤如下:

以MobileSafari为例

在越狱iOS设备上,找到MobileSafari 这个执行文件(系统应用在/Application/MobileSafari.app/ 目录下,AppStore 下载的应用在/private/var/containers/Bundle/Application/ID/XXX.app),拷贝到Mac上
利用ldid将MobileSafari的code sign导出:
ldid -e MobileSafari >> MobileSafari.xml
打开MobileSafari.xml添加get-task-allow这个key,并赋值为true,保存退出
<key>get-task-allow</key>
<true/>

对MobileSafari进行重签名:
ldid -SMobileSafari.xml ./MobileSafari 
将MobileSafari重新拷贝回iOS设备,声明下权限(原本就有755权限了):
chmod 755 ./MobileSafari 
然后就大功告成了
在设备上启动Safari,打开Xcode,在Debug → Attach to Process → [process name]。就可以调试了
如果在越狱的iOS 设备上有ldid,则可以直接在设备上进行签名导出 → 添加键值 → 重新签名的流程

注意:
1、在想要attach 到设备上的应用需要先选中设备

2、调试时的终端显示在Windows → device → [设备] 中


参考资料
iOS调试技巧(3)—— Attach to Process with Xcode
上传的附件:
本主题帖已收到 0 次赞赏,累计¥0.00
最新回复 (6)
NAGAじSKY 2016-10-9 16:22
2
进来看看,mark一下--娜迦
1
BinGzL 2016-10-9 17:55
3
mark
FindCall 2016-10-25 13:52
4
mark
wswm 2016-11-11 10:53
5
8.0的pad   加了get-task-allow后 重新签名  并且赋予可执行权限     运行程序会闪退是什么鬼?
1
karlx 2017-3-7 21:05
6
wswm 8.0的pad&nbsp; &nbsp;加了get-task-allow后 重新签名&nbsp;&nbsp;并且赋予可执行权限&nbsp; &nbsp; ...
是否可以针对 get-task-allow进行检测呢 ?
KarlPeng 2017-3-16 16:57
7
有没有直接bypass掉get-task-allow检测的tweak?
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.012, SQL: 11 / 京ICP备10040895号-17