iOS 11.4 lldb越狱调试之旅

非完美越狱手机,尝试所有方法仍不成功后可以重启手机尝试,我也不知道为啥,但是重启后就能成功~~

1.越狱手机上的目录 /Developer/usr/bin/debugserver本身就只有arm64架构,所以直接拷贝到/var/root或者/bin/目录下,不需要瘦身;

2.给debugserver签名
执行./debugserver *:12345 -a [process name]
遇到 error: failed to attach to process named: "" unable to start the exception thread

两种方式
一种ldid

ldid -Sent.plist/-Sent.xml debugserver

一种是直接codesign

codesign -s "085C04530D0208CB6A5A99E1C63E6539FED37339" --entitlements ent.plist -f debugserver

-s后面跟的一串是证书标记的信息,通过下面命令可以获得

security find-identity -v -p codesigning

也可以用后面那部分可读的信息,证书类型+名字("iPhone Developer: XXXXXX (9UB92*****)"),只要能区分出keychain里的不同证书就好。

然而失败了,scp命令拷贝到手机/usr/bin目录下,执行得到killed:9

然后搜索说ent.plist 不完全的,因此找了一份颇为完全的





com.apple.backboardd.debugapplications

com.apple.backboardd.launchapplications

com.apple.diagnosticd.diagnostic

com.apple.frontboard.debugapplications

com.apple.frontboard.launchapplications

com.apple.security.network.client

com.apple.security.network.server

com.apple.springboard.debugapplications

com.apple.system-task-ports

get-task-allow

platform-application

run-unsigned-code

task_for_pid-allow

com.apple.private.skip-library-validation

com.apple.private.security.no-container



尝试用codesign签名后仍然失败,怀疑证书权限这些信息是不是没有签上去

 codesign -vv -d debugserver

用上面查看二进制文件或.app文件的证书信息,发现签成功了

ldid -e debugserver 

ent.plist所包含的各种权限也都有

可执行权限 chmod +x 和 chmod 777都尝试了一遍还是不行
看到有说用这个可以的

/usr/bin/ldid -P -K/usr/share/jailbreak/signcert.p12 -Sent.plist -M /Applications/test12.app/test12

其实这条命令跟codesign+证书签名应该是一样的,所以这应该不是原因

最后再一篇文章里发现发现说要重启手机,我最开始想这是不是有点傻,之前做过都没有说要重启手机的,而且11.4是非完美越狱,重启后我就得再越狱一遍,太麻烦了,但是尝试了各种方法无果后想着死马当活马医吧,所以还是重启了

然后发现重启后竟然就可以了,一把心酸泪~

3.lldb使用
1)先转发端口

./tcpreplay.py -t 12345:12345

2)在越狱手机上监听端口

debugserver 127.0.0.1:12345 -a "程序名(ps -e获得)"

最开始指定IP地址时用的localhost:12345有问题,rejecting incoming connection from ::ffff:127.0.0.1 搜索说是最好具体指定换成了127.0.0.1

3)在mac终端输入lldb,再输入

process connect connect://127.0.0.1:12345

这命令有点耗时,可能出现python错误(ImportError: cannot import name _remove_dead_weakref),在当前终端输入export PATH=/usr/bin:$PATH 切回系统自带python即可

4)终于连上了,就可以像在Xcode一样lldb调试了,只是在设置断点后发现程序抛出异常跑步下去了~~

搜索了下lldb忽略异常的方法,发现要 修改debugserver的代码,感觉有点复杂,暂时放弃了。

唉,其实MonkeyDev进行lldb调试是很好用的,只是这个会修改二进制文件,为了查看从appstore下载的app原生态的信息准备lldb直接调,发现还是问题多多,后续查看是否有其它解决办法吧~

最后我发现把问题问清楚后答案就出来了~

参考文章:
[iOS调试进阶]让lldb在遇到EXC_BAD_ACCESS之后能继续执行进入signal_handle

iOS12 下配置debugserver + lldb调试环境的小技巧和问题处理

解决 iOS 12.4 Killed: 9 的问题

你可能感兴趣的:(iOS 11.4 lldb越狱调试之旅)