LLDB 解密-砸殼 Framework

準(zhǔn)備工作

找出程序的可執(zhí)行文件路徑

  • root# ps aux | grep Snapchat

列出所有的 Frameworks

  • xx.app root# ls Frameworks

把所需要解密的庫,復(fù)制出來

  • scp -P 2222 -r root@localhost:/var/....xx.app/Frameworks/xx
  • scp -P root@10.0.0.3:/var/....xx.app/Frameworks/xx

獲取可執(zhí)行文件的頭部信息

  • otool -hf xxx(可執(zhí)行文件)
圖1.png

獲取64位的加密信息(arm64)

  • otool -arch arm64 -l 可執(zhí)行文件 | grep crypt

    圖2.png

LLDB 附加

獲取解密的目標(biāo)文件加載模塊的基地址

  • im list -o -f 可執(zhí)行文件
圖3.png

獲取解密后的二進(jìn)制數(shù)據(jù)

  • memory read --force --outfile ~/Desktop/dumpoutput --binary --count cryptsize cryptoff+基地址

    • cryptsize來自加密信息,cryptoff 也是來自加密信息
圖4.png

~/Desktop/dumpoutput 是保存到本地計(jì)算機(jī)的目標(biāo)可執(zhí)行文件,這個(gè)文件包含的是解密后的數(shù)據(jù)

修復(fù)文件

因?yàn)?dump 出來的文件都沒有 Mach-O 文件頭,所以要先把 dump 出來的數(shù)據(jù)寫會(huì)原來加密的文件,以替換原來加密的部分.

  • dd seek=20086784 bs=1 conv=notrunc if=/Users/wyp/Desktop/dumpoutput of=./可執(zhí)行文件名
圖5.png

20086784是20070400+16384的計(jì)算結(jié)果.20070400是之前獲取的 arm64架構(gòu)的偏移值 offset,16384 是加密數(shù)據(jù)的 crypoff, 二者相加,得到了寫入加密數(shù)據(jù)在文件中的偏移值

替換之后,使用 lipo 從 FAT 文件中提取 arm64 架構(gòu)的文件,然后將 arm64_tmp 拖到 MachOView 中,修改 cryptid 的值為00000000,然后就完成了 framework 的解密.

  • lipo 可執(zhí)行文件 -thin arm64 -output arm64_tmp
圖6.png
圖7.png

查看64位的加密信息

圖8.png

完成

部分 framework, 通過 image li 查不到基地址,解密的方式待續(xù)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容