iOS攻防 - (十二)LLDB和DebugServer配合使用
1.介绍
debugserver是运行在iOS上。从它的名字你就能看出,debugserver扮演着一个服务器的角色,可以执行在MAC OS X客户端执行LLDB命令,并把结果反映到终端界面上,通常也成为”remote debugging”远程调试。debugserver默认在iOS系统里是没有的,但是,只要我们用Xcode在iPhone上调试过程序,它就会自动安装到iOS的目录 /Developer/usr/bin/
。但是此种情况下,debugserver只能调试自己开发的程序。debug自己的程序多没意思,我们有源码了,什么都是一目了然,只要调试别人开发的程序,才有意思。所以,别担心,以下有一些小技巧教你如此调试别人的程序。
2.配置debugserver
2.1 首选从以下这张表中找出你的iOS设备对应的ARM类型
我的iOS设备是iPhone 5,所以对应的ARM类型是armv7s。
首先从iOS设备中把debugserver拷贝到OS X中,iOS路径是 /Developer/usr/bin/debugserver
,可以通过iFunBox拷贝,也可以通过scp命令,取决于你自己。这里我举栗子拷贝到OS X的Documents目录,然后执行如下瘦身命令
lipo -thin armv7s debugserver -output debugserver
armv7s,取决于你的iOS设备
2.2 给debugserver添加task_for_pid权限
下载 http://iosre.com/ent.xml 到 “/Users/victor/Documents” 的OSX目录下,然后运行以下命令:
/opt/theos/bin/ldid -Sent.xml debugserver
注意:-S和ent.xml中间没有空格
如果不知道theos和ldid,请看这篇文章 http://blog.csdn.net/u013538542/article/details/72811142
如果一切顺利,几秒钟内,这个命令就能执行完。倘若几分钟了,或者程序卡死在这条命令,那就取消吧,换一个方案。
下载 http://iosre.com/ent.plist 到 “/Users/victor/Documents/” 的OSX目录下,然后运行如下命令:
codesign -s - –entitlements ent.plist -f debugserver