可執(zhí)行文件的脫殼

大家知道,通常iOS中下載的ipa包可以通過解壓縮,最后獲得可執(zhí)行的Mach-O文件。

一、判斷可執(zhí)行文件是否被加密
方法1:通過終端命令來查看
otool -l QQ | grep crypt

//class-dump出來的qqHeaders文件夾中頭文件如果只有一個,通常也是被加密的
class-dump -H QQ -o qqHeaders
//輸出的cryptid如果為0則未加密,為1則被加密
otool -l QQ | grep crypt
終端判斷是否被加密.png

方法2:通過MachOView來查看

MachOView判斷是否被加密.png

方法3:Hopper Disassembler解析不出來的,也是被加密的。

二、脫殼
一旦發(fā)現(xiàn)可執(zhí)行文件是被加密過的,那就需要先進行脫殼操作,將原始的可執(zhí)行文件給剝離出來。通常我們采用的都是硬脫殼方式,即暴力脫殼,也不需要將程序運行到內(nèi)存中再進行操作。
硬脫殼是有工具的,一般用Clutch工具和dumpdecrypted工具,接下來我們逐個解釋。

1、Clutch工具
Clutch下載地址
通過Clutch可以將裝在手機上的應用進行脫殼操作,所以需要安裝到手機上。為了方便在終端上直接操作,通常會將Clutch工具拖到/usr/bin目錄下(建議給下載下來的Clutch后綴版本號去掉)。如果登錄到手機后,在終端敲入Clutch出現(xiàn)權(quán)限不足的問題,可以給其添加可執(zhí)行的權(quán)限chmod +x /usr/bin/Clutch即可。

Clutch操作.png

如上圖箭頭所指,成功脫殼后,會自動將文件打包成一個.ipa文件,終端里也會輸出這個.ipa文件的具體路徑,導出到電腦上即可使用 。這個.ipa里面包含的就是已經(jīng)解密成功的可執(zhí)行文件,即脫殼操作完成。我們可以通過前面所說的otool指令來驗證一下,查看這個.ipa的crypt值是否真的為0。

驗證脫殼結(jié)果.png

有圖有真相,我沒有胡說哈??

2、dumpdecrypted工具
dumpdecrypted下載地址

下載的dumpdecrypted文件.png

(1)首先將dumpdecrypted.c編譯成動態(tài)庫
進入dumpdecrypted.c文件所在的目錄,終端輸入make指令進行編譯,會自動執(zhí)行其目錄中的Makefile文件內(nèi)部的指令,生成對應的動態(tài)庫文件

動態(tài)庫生成.png

(2)將生成的dumpdecrypted.dylib動態(tài)庫文件拷貝到iPhone上(如果是root用戶,建議放到/var/root目錄)

拷貝動態(tài)庫文件.png

(3)終端進入dumpdecrypted.dylib所在的目錄,使用環(huán)境變量DYLD_INSERT_LIBRARIES將動態(tài)庫注入到需要脫殼的可執(zhí)行文件中(可執(zhí)行文件的路徑可以通過ps -A查看獲?。?br> 具體操作命令:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執(zhí)行文件路徑

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib "/var/mobile/Containers/Bundle/Application/5A97A551-4E9B-4E57-B065-E1DC913B1FC9/Jiu_Kuai_Jiu copy.app/Jiu_Kuai_Jiu copy"

當前文件/var/root下新生成的Jiu_Kuai_Jiu copy.decrypted文件就是脫殼后的可執(zhí)行文件,用otool指令驗證一下就知道了。

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

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

  • 加殼 通常我們從App Store下載的應用,拿到安裝包之后,通過class-dump導出頭文件的時候,會發(fā)現(xiàn)無法...
    Andres工坊閱讀 1,868評論 0 3
  • 加殼 什么是加殼? 利用特殊的算法,對可執(zhí)行文件的編碼進行改變(比如壓縮、加密),以達到保護程序代碼的目的 脫殼 ...
    e297b14c9e53閱讀 431評論 0 0
  • 我們?nèi)粘i_發(fā)提交給Appstore發(fā)布的App,都經(jīng)過官方保護而加密,這樣可以保證機器上跑的應用是蘋果審核過的,也...
    妖精的菩薩閱讀 19,326評論 1 14
  • 為什么需要脫殼?是因為我們在上傳app到蘋果商店的時候AppStore已經(jīng)是幫我們加殼的了,如下圖: 什么又是加殼...
    coder_feng閱讀 464評論 0 0
  • 打卡日期:2018年03月29日 打卡累計天數(shù):25/30 #宣言(你什么都會,只是需要被喚醒!)# ?孩子第一個...
    靜雪戀閱讀 181評論 0 0

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