码迷,mamicode.com
首页 > 移动开发 > 详细

在非越狱设备上使用 LLDB 调试第三方 App

时间:2015-03-17 14:12:34      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:ios   lldb   debug   gdb   remote   

说明

     这个方法是在 iOS 8 刚发布的时候想到的,当时主要用来在非越狱的 iOS 8 设备上调试分析第三方已经支持 iOS 8 的 App,比如:UC 浏览器,下面也会使用 UCWEB 为例来说明一些命令。

原理

     谈不上原理,主要就是利用 xcode 的工具链,当然如果对证书、签名、Entitlements 比较熟悉,可能会很自然的想到这个方法。当时想到方法后,就在 github 上搜索了一下发现已经有人写了相关的工具,下面跟大家说下具体如何操作。

工具

环境

     1、OS X Yosemite - 10.10.2
     2、xcode - 6.1.1

步骤

     1、配置 xcode 的命令行环境,如下图:

技术分享

     说明:xcode 支持的 iOS 系统版本号需要大于等于设备,否则会无法挂载调试工具。

     2、签出工具:git clone https://github.com/phonegap/ios-deploy

     3、编译工具,shell 进入到 ios-deploy 目录,直接 make 即可:

 技术分享

     编译成功后,可以将 ios-deploy 拷贝到 /usr/local/bin 中,便于全局使用。

     4、在越狱设备上解密第三方 App,可以手工操作,也可以使用 Clutch 等。
     这步比较重要,不解密会报错,具体原因没有去追究。在开发调试时向设备上安装的应用也是没有加密的。

     5、权限 Entitlements
<?xml version="1.0"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>get-task-allow</key>
<true/>
</dict>
</plist>

将如上内容保存为:Entitlements.plist,后面签名时需要。

     6、准备 mobileprovision 文件,可以 iOS Dev Center 中下载,mobileprovision 文件中需要包含目标设备,这个做 iOS 开发的应该都知道。检查方法是:可以使用 emacs 打开 mobileprovision 文件,然后查看设备的 udid 是否在文件中。
     将下载到 mobileprovision 重命名为 embedded.mobileprovision,将重命名后的文件拷贝到 UCWEB.app 中:

技术分享

     7、运行如下命令重新签名
      
codesign -f -s "iPhone Developer: 你的证书名字" --entitlements Entitlements.plist UCWEB.app

     8、运行如下命令开始调试,调试前请解锁屏幕:
     
ios-deploy -v -d -n -i “设别 UDID" -b UCWEB.app

     说明:安装应用的过程比较长。
     如果成功,状态如下图:

技术分享
     
     9、设置断点,运行程序:

技术分享

     10、其他的跟正常的 lldb 远程调试没有什么区别,enjoy。
     
     
     

在非越狱设备上使用 LLDB 调试第三方 App

标签:ios   lldb   debug   gdb   remote   

原文地址:http://blog.csdn.net/proteas/article/details/44340741

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!