上一篇文章: "舉一反三:iOS逆向App簽名"
"金蛋破殼:iOS應用砸殼工具解密",介紹了如何通過工具砸殼,讀者朋友可以先閱讀一下。
本篇文章,我們將使用LLDB進行手動砸殼操作,以增強對iOS應用程序的逆向分析能力。

- LLDB砸殼實現(xiàn)的原理
使用lldb砸殼是一種常見的逆向工程技術(shù),旨在繞過iOS應用程序的加密保護,以便進行更深入的分析和調(diào)試。
通過lldb連接到運行中的應用程序,找到其可執(zhí)行文件的內(nèi)存地址,并將其內(nèi)容dump到本地文件中。
這樣,我們就可以繞過加密保護,獲得對應用程序的完全訪問,并進行后續(xù)的逆向分析工作。
本篇以某App為例,進行砸殼
下載好你想砸殼的App
- 我們找到App的可執(zhí)行文件
ps -ax | grep app
4215 ?? 0:13.06 /var/containers/Bundle/Application/5C560292-9C39-4080-9D7A-3D83413EB127/app/app
- 把可執(zhí)行文件拷貝到電腦,通過otool 查看二進制文件的信息
otool -arch arm64 -l 二進制 | grep -C5 LC_ENCRYPTION
cmd LC_MAIN
cmdsize 24
entryoff 2361676
stacksize 0
Load command 12
cmd LC_ENCRYPTION_INFO_64
cmdsize 24
cryptoff 16384
cryptsize 34504704
cryptid 1
pad 0
cryptid為1,即為加密
- 我們通過lldb進行進程附加
(lldb) image list
[ 0] E11692A0-C528-3ADD-8B12-6BA7F7F8D51F 0x0000000100b80000 /private/var/containers/Bundle/Application/5C560292-9C39-4080-9D7A-3D83413EB127/app/二進制 (0x0000000100b80000)
memory read --force -outfile ./Decrypted.bin --binary --count 34504704 0x0000000100b80000+16384
34504704 bytes written to 'Decrypted.bin'
獲取解密的數(shù)據(jù)Decrypted.bin
- 用解密后的數(shù)據(jù)替換原加密數(shù)據(jù)
dd seek=16384 bs=1 conv=notrunc if=./Decrypted.bin of=二進制
MachOView -> LC_ENCRYPTION_INFO 修改cryptid為0
在脫殼后,我們需要驗證一下class-dump是否可行,以確認解密的Mach-O文件是否成功解密。
砸殼成功后,使用工具對其進行分析,例如 class-dump、Hopper、IDA 等,以查看其中的內(nèi)容。