美文网首页
iOS 11.4 lldb越狱调试之旅

iOS 11.4 lldb越狱调试之旅

作者: 绿绿清欢 | 来源:发表于2019-10-25 18:44 被阅读0次

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

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 不完全的,因此找了一份颇为完全的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.backboardd.debugapplications</key>
<true/>
<key>com.apple.backboardd.launchapplications</key>
<true/>
<key>com.apple.diagnosticd.diagnostic</key>
<true/>
<key>com.apple.frontboard.debugapplications</key>
<true/>
<key>com.apple.frontboard.launchapplications</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>com.apple.system-task-ports</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>platform-application</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
<key>com.apple.private.skip-library-validation</key>
<true/>
<key>com.apple.private.security.no-container</key>
<true/>
</dict>
</plist>

尝试用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越狱调试之旅

      本文链接:https://www.haomeiwen.com/subject/nkcevctx.html