解决 iOS 12.4 Killed: 9 的问题
解決 iOS 12.4 Killed: 9 的問題
隨著 iOS 12.4 的越獄出來之后,不少人的手機都升級到 12.4,最近我也在使用 12.4 做調(diào)試機,一開始 debugserver 也遇到一些坑,不過好在都解決了。最后剩下一個很頭疼的問題,就是自己寫的 App 上傳到手機 /Applications 目錄下,發(fā)現(xiàn)既然不能運行,提示 Killed: 9。
按照老套路,使用 codesign 或者 ldid 簽名:
codesign -s - --entitlements ent.plist -f test12由于 iOS 12 需要添加 platform-application,和簽名 debugserver 一樣,完整的 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/> </dict> </plist>簽名之后再次上傳到 /Applications,運行還是提示 Killed 9,嘗試 setuid(0); setgid(0);,還有設(shè)置文件權(quán)限也都不管用,都是提示 Killed 9
chown root:wheel test12 chmod u+s test12不過發(fā)現(xiàn)之前寫的插件打包成 deb 可以在 iOS 12.4 運行,文件也是會釋放到 /Applications 目錄,于是嘗試把 test12.app 制作成 deb 包,上傳到 /var/mobile/test12.deb,使用 dpkg 命令安裝,安裝成功后發(fā)現(xiàn)果然是可以執(zhí)行。
dpkg -i /var/mobile/test12.debuicache使用 ldid -e /Applications/test12.app/test12 >> /var/mobile/test12.plist,將 entitlement 導(dǎo)出查看比之前的多了兩條,不過添加上這兩條重新簽名依然是不行。
<key>com.apple.private.skip-library-validation</key> <true/> <key>com.apple.private.security.no-container</key> <true/>思考一個問題,為什么手動上傳的文件不能運行,而制作成 deb 包安裝就可以呢?這兩者有什么區(qū)別嗎?嘗試對 deb 安裝后的文件靜態(tài)修改,插入 LoadCommand 加載動態(tài)庫,發(fā)現(xiàn)只要靜態(tài)改過可執(zhí)行文件,運行就提示 Killed 9,但是改過的文件打包成 deb,發(fā)現(xiàn)又可以運行了。
看樣子是因為 dpkg 做了什么特殊的操作。在手機上找到 /usr/bin/dpkg,載入 IDA 靜態(tài)分析,在 dir_sign_file 函數(shù)中找到了一條和簽名相關(guān)的命令,猜測可能是和這個命令有關(guān)系,在釋放完文件后,執(zhí)行了簽名命令。
最終得到的簽名命令是這個,使用下面的命令對文件進行簽名即可解決 Killed 9 的問題。
/usr/bin/ldid -P -K/usr/share/jailbreak/signcert.p12 -S/usr/share/entitlements/global.xml -M /Applications/test12.app/test12原文地址:https://www.ioshacker.net/thread-187-1-1.html
總結(jié)
以上是生活随笔為你收集整理的解决 iOS 12.4 Killed: 9 的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 13 绕过锁屏密码查看通讯录、照
- 下一篇: 苹果史诗级硬件漏洞 iOS 可永久越狱并