一、cycript
通过在手机上安装
Cycript
插件,通过usb或者wifi连接手机后,cycript -p xxxx
依附相关进程,便可使用。
导入自定义命令的cy文件
1、拷贝cy文件到usr/lib
中。
scp -P 12345 cy电脑路径 root@localhost:/usr/lib/cycript0.9/
2、import
自己的dy文件,便可写入cycript
命令。
<< 补充
如果cy文件过多,我们导入的时候可以对其通过放置于不同的文件夹进行分类。
mv dyTest.cy ./dySource
二、Reveal
准备
1、在手机上安装RevealLoader
或者Reveal2Loader
插件。
2、在手机指定目录创建名为
RHRevealLoader
的文件夹。
Dyoung5s:/ root# cd Library
Dyoung5s:/Library root# pwd
/Library
Dyoung5s:/Library root# mkdir RHRevealLoader
Dyoung5s:/Library root# ls
Application Support Keychains MobileDevice RHRevealLoader
Audio LaunchAgents MobileSubstrate Ringtones
Caches LaunchDaemons PreferenceBundles Updates
Filesystems Lockdown PreferenceLoader Wallpaper
Frameworks Logs Preferences
Internet Plug-Ins Managed Preferences Printers
3、在mac上下载最新的Reveal
,通过Help
->Show Reveal Library in Finder
->iOS Library
。
将finder中的RevealServer.framework
中的RevealServer
可执行文件拷贝到之前手机创建的文件夹中。
scp -P 12345 RevealServer路径 root@localhost:/Library/RHRevealLoader
4、将手机中的RevealServer
可执行文件重命名为动态库
Dyoung5s:/Library/RHRevealLoader root# mv RevealServer libReveal.dylib
Dyoung5s:/Library/RHRevealLoader root# ls
libReveal.dylib
使用
1、打开手机设置->Reveal
->Enabled Applications
->选择自己要进行调试的应用。
2、mac进入
Reveal
中,即可出现如下显示。
3、选择usb或者wifi调试进入调试界面,便可以动态调试界面。
三、lldb调试
1、对比手机和Xcode包内容中的debugServer
。
a -> 包内容中
b -> 手机目录:
/Developer/usr/bin
c -> 对比得知,同系统下的debugserver是一样的。
2、为debugserver
写入权限,并拷贝至手机的/usr/bin
中。
a -> 创建名为entitlement.plist
的权限文件。内容如下
task_for_pid-allow
get-task-allow
run-unsigned-code
com.apple.springboard.debugapplications
b -> 将权限文件写入到debugserver
中。通过ldid -e debugserver
命令可以检查是否写入陈宫。
codesign -s - --entitlements entitlement.plist -f debugserver
c -> 将权限写入成功的debugserver
文件拷贝至手机/usr/bin
目录中。
scp -P 12345 debugserver root@localhost:/usr/bin
3、使用
a -> 开启server服务,并依附到某个进程。(*代表当前主机地址,9393是端口号)
Dyoung5s:/Developer/usr/bin root# debugserver *:9393 -a WeChat
debugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-320.2.89
for arm64.
Attaching to process WeChat...
Listening to port 9393 for a connection from *...
b1 -> 电脑端进入lldb环境中,进行wifi连接
//192.168.0.21 手机ip地址。
process connect connect://192.168.0.21:9393
b2 -> 配置并进行usb连接
修改映射端口的脚本,加入手机开发的端口号:
通过执行脚本,便可检查脚本是否修改成功。
连接端口。
process connect connect://localhost:9393
补充
当手机开启端口并依附到进程中时,进程便进入暂停状态。这时如果下断点推荐通过内存地址的方式。
一些命令
-
process interrupt
: 进程暂停。 -
c
:进程继续。
其它详见lldb
参考链接:
- debugserver的配置