加殼
-
什么是加殼?
我們的ipa文件上傳appstore,蘋(píng)果會(huì)給我們做一個(gè)加密,其實(shí)我們運(yùn)行在內(nèi)存中的過(guò)程是一個(gè)加密的殼程序,當(dāng)然在手機(jī)中我們會(huì)對(duì)他進(jìn)行解密殼程序,來(lái)直接運(yùn)行可執(zhí)行的文件,當(dāng)然蘋(píng)果這樣做的目的是為了保護(hù)我們的程序。
image.png
脫殼
-
脫殼的方式
1.硬脫殼:
所謂的硬脫殼就是將蘋(píng)果加密的程序用算法進(jìn)行破解出來(lái),比如加殼采用的是加法,那么我們破解他就采用減法來(lái)進(jìn)行破解。
2.動(dòng)態(tài)脫殼:
我們知道在手機(jī)中是會(huì)將殼程序進(jìn)行破解的,那么我們可以通過(guò)一定的手段來(lái)從內(nèi)存中拿到可執(zhí)行文件,但是因?yàn)槲覀兪謾C(jī)的環(huán)境是比較復(fù)雜的,所以在iOS中我們一般采用的都是硬脫殼。
image.png - 查看是否脫殼以及脫殼的工具
1.怎樣查看脫殼?
方法1:我們可以通過(guò)MachOView來(lái)進(jìn)行查看,怎樣下載和使用MachOView我在上一篇文章中有說(shuō)。
我們可以在MachOView 中的Load Commands ->LC_ENCRYPTION_INFO中查看Crypt ID ,如果是0 那么就是已經(jīng)脫殼了,如果不是0那么就是加殼的。比如我如下操作:
image.png
但是我們知道這種方式是稍微復(fù)雜的,因?yàn)槲覀冃枰獙⑺目蓤?zhí)行文件導(dǎo)入MachOView,這種算是一種辦法但是我還是不建議用這種。
方法2:
我們需要安裝一個(gè)工具Clutch,具體的下載地址在:https://github.com/KJCracks/Clutch/releases
或者我們安裝這個(gè)工具也是可以的:
https://github.com/stefanesser/dumpdecrypted/
一般來(lái)說(shuō)我們都是安裝的第一個(gè)工具,怎樣安裝如下:
image.png
如果你輸入Clutch出現(xiàn)了這樣的界面說(shuō)明你安裝成功了
image.png
那么我們?cè)鯓涌梢圆榭词欠衩摎ち四兀?br> 使用命令(前提是已經(jīng)連接上手機(jī),并且用mac控制手機(jī),我前面的文章有說(shuō)到)
Clutch -i
比如我的是這樣的:

如果出現(xiàn)了這樣的app就說(shuō)明你是appstore安裝的或者是沒(méi)有脫殼的,因?yàn)檫@樣的ipa即使你找到可執(zhí)行文件你還是解析不出.h文件或者.m文件不是匯編語(yǔ)言。
-
其中dumpdecrypted怎樣安裝和使用
image.png
image.png - 注意:
除了上述的錯(cuò)誤你可能還會(huì)出現(xiàn)沒(méi)有簽名的錯(cuò)誤,那么你需要對(duì)你的dumpdecrypted.dylib進(jìn)行簽名,我們現(xiàn)在已經(jīng)知道dumpdecrypted.dylib在/var/root目錄下,在此目錄下執(zhí)行命令:
ldid -S dumpdecrypted.dylib
這樣的話就簽了名了,在執(zhí)行上面的命令應(yīng)該就能成功了,說(shuō)明:有時(shí)候Clutch 會(huì)破解失敗這個(gè)dumpdecrypted 還是值得擁有。
對(duì)加殼app進(jìn)行破解獲取可執(zhí)行文件
1.首先查看手機(jī)中哪些app是加了殼的(我以我自己手機(jī)為例)
執(zhí)行命令:
Clutch -i
執(zhí)行結(jié)果如圖:

- 輸入app的序列號(hào)或者app的BundleId號(hào)(<序列號(hào)>)進(jìn)行生成ipa文件,執(zhí)行命令(包越大等待的時(shí)間就越長(zhǎng))
Clutch -d APP序號(hào)或BundleId
比如我的是:把微信給破解了

我可以到手機(jī)中找到那個(gè)ipa包,因?yàn)樗呀?jīng)把目錄打印出來(lái)了。拿到他的ipa包之后直接將ipa的包改為zip,然后直接解壓縮,在payload這個(gè)文件下就是包文件。通過(guò)顯示包內(nèi)容找到他的可執(zhí)行文件,我們用class-dump 進(jìn)行破解即可獲取頭文件,用Hopper Disassembler找他的.m文件(前面的文章有說(shuō)到)。
這是圖片展示的Clutch的使用







