iOS逆向?qū)W習(xí)之五(加殼耿芹?脫殼?)

加殼

通常我們從App Store下載的應(yīng)用挪哄,拿到安裝包之后吧秕,通過class-dump導(dǎo)出頭文件的時候,會發(fā)現(xiàn)無法導(dǎo)出頭文件中燥,原因就是App Store對我們上傳的App進(jìn)行了加殼操作寇甸。

什么是加殼?

利用特殊的算法疗涉,對可執(zhí)行文件的編碼進(jìn)行改變(比如壓縮拿霉、加密),以達(dá)到保護(hù)程序代碼的目的

  • 未加殼咱扣,我們App的可執(zhí)行文件一旦執(zhí)行绽淘,那么可執(zhí)行文件中的代碼會被裝載到內(nèi)存中
  • 加殼后,可執(zhí)行文件中的所有代碼被加密之后就無法使用ldyd進(jìn)行加載了闹伪,所以在可執(zhí)行文件外部包了一層殼程序沪铭,殼程序可以直接運(yùn)行壮池。殼程序的作用就是使用解密算法對我們的可執(zhí)行文件進(jìn)行解密操作,解密完成之后就會去執(zhí)行文件杀怠,將代碼裝載進(jìn)內(nèi)存中椰憋。

如何判斷程序被加殼(加密)?

  • 使用MachOView加載可執(zhí)行文件赔退,查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID橙依,<font color=red>0</font>表示<font color=red>未加密</font>,<font color=red>>=1</font>表示<font color=red>已加密</font>

這里的Crypt ID表示加密工具類型,如果為1硕旗,表示使用編號為1的加密工具進(jìn)行加密

image
  • 使用otool命令行也可以查看Load Commands
otool -l 可執(zhí)行文件路徑 | grep crypt

由于Load Commands內(nèi)容較多窗骑,所以通過crypt關(guān)鍵字進(jìn)行檢索

image

脫殼

既然無法通過加殼后的程序?qū)С鑫覀兯枰念^文件信息,那么我們就需要對程序進(jìn)行脫殼操作

什么是脫殼漆枚?

摘掉殼程序创译,將未加密的可執(zhí)行文件還原出來

怎么進(jìn)行脫殼?

脫殼方式有兩種墙基,硬脫殼和動態(tài)脫殼软族。

  • 硬脫殼就是直接將殼程序通過執(zhí)行解密算法得到我們所需要的可執(zhí)行文件,在iOS中碘橘,一般使用硬脫殼互订。
  • 動態(tài)脫殼是指將程序運(yùn)行之后,直接從內(nèi)存中導(dǎo)出我們所需要的可執(zhí)行文件

脫殼工具

iOS中常用的脫殼工具有<font color=red>Clutch</font>和<font color=red>dumpdecrypted</font>

Clutch

可以點擊下載Clutch最新Release版本

Clutch配置

  • 下載最新的Release版本痘拆,將Clutch-2.0.4改名為Clutch
  • 使用以下命令將Clutch文件拷貝到iPhone上的/usr/bin目錄仰禽,當(dāng)然,也可以使用ifunBox直接拖拽
scp -P 10088 ./Clutch root@localhost:/usr/bin
  • 如果在iPhone上執(zhí)行Clutch命令提示無權(quán)限纺蛆,則需要為Clutch增加執(zhí)行權(quán)限
chmod +x /usr/bin/Clutch

Clutch使用

  • 遠(yuǎn)程連接iPhone后吐葵,通過以下指令列出當(dāng)前已安裝的可以進(jìn)行脫殼的App
Clutch -I
image
  • 通過App序號或者bundle ID進(jìn)行脫殼操作
Clutch -d 2
Clutch -d com.gemd.iting
image
  • 脫殼成功之后,在<font color=red>/private/var/mobile/Documents/Dumped/</font>路徑下就能找到脫殼成功后的ipa文件

路徑當(dāng)中的/private/var是iPhone中的真實路徑桥氏,iPhone的/var是/private/var的替身

  • 將脫殼后的ipa包導(dǎo)入到Mac上温峭,找到其中的Mach-O文件,使用otool命令查看Load Commands可以發(fā)現(xiàn)Crypt ID為0
image

dumpdecrypted

dumpdecrypted配置

點擊下載dumpdecrypted工具

  • 下載好源代碼后字支,在源代碼目錄執(zhí)行make指令進(jìn)行編譯凤藏,獲得dylib動態(tài)庫文件
image
  • 將dylib文件拷貝到iPhone上(如果是root用戶,建議放在<font color=red>/var/root</font>目錄)

dumpdecrypted使用

  • 終端進(jìn)入dylib所在位置堕伪,使用環(huán)境變量<font color=red>DYLD_INSERT_LIBRARIES</font>將dylib注入到需要脫殼的可執(zhí)行文件
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執(zhí)行文件路徑

可以通過ps -A查看可執(zhí)行文件的完整路徑

image
  • 執(zhí)行完成之后揖庄,在<font color=red>/var/root</font>目錄下會生成.decrypted文件,這就是脫殼之后的可執(zhí)行文件∏反疲現(xiàn)在使用otool命令查看Load Commands可以發(fā)現(xiàn)Crypt ID為0蹄梢。

  • 最后使用class-dump就可以導(dǎo)出可執(zhí)行文件中的所有頭文件了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末富俄,一起剝皮案震驚了整個濱河市禁炒,隨后出現(xiàn)的幾起案子而咆,更是在濱河造成了極大的恐慌,老刑警劉巖幕袱,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暴备,死亡現(xiàn)場離奇詭異,居然都是意外死亡们豌,警方通過查閱死者的電腦和手機(jī)馍驯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玛痊,“玉大人,你說我怎么就攤上這事狂打±奚罚” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵趴乡,是天一觀的道長对省。 經(jīng)常有香客問我,道長晾捏,這世上最難降的妖魔是什么蒿涎? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮惦辛,結(jié)果婚禮上劳秋,老公的妹妹穿的比我還像新娘。我一直安慰自己胖齐,他們只是感情好玻淑,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呀伙,像睡著了一般补履。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剿另,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天箫锤,我揣著相機(jī)與錄音,去河邊找鬼雨女。 笑死谚攒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戚篙。 我是一名探鬼主播五鲫,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岔擂!你這毒婦竟也來了位喂?” 一聲冷哼從身側(cè)響起浪耘,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塑崖,沒想到半個月后七冲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡规婆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年澜躺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抒蚜。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡掘鄙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗡髓,到底是詐尸還是另有隱情操漠,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布饿这,位于F島的核電站浊伙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏长捧。R本人自食惡果不足惜嚣鄙,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望串结。 院中可真熱鬧哑子,春花似錦、人聲如沸肌割。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽声功。三九已至烦却,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間先巴,已是汗流浹背其爵。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留伸蚯,地道東北人摩渺。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像剂邮,于是被迫代替她去往敵國和親摇幻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 加殼脫殼基本概念 使用dumpdecrypted工具進(jìn)行iOSApp脫殼 一 加殼脫殼基本概念 一 什么是加殼? ...
    當(dāng)前明月閱讀 4,562評論 15 8
  • 加殼 什么是加殼绰姻?利用特殊的算法枉侧,對可執(zhí)行文件的編碼進(jìn)行改變(比如壓縮、加密)狂芋,以達(dá)到保護(hù)程序代碼的目的 脫殼 什...
    Rathen閱讀 518評論 0 0
  • 加殼 什么是加殼榨馁?我們的ipa文件上傳appstore,蘋果會給我們做一個加密帜矾,其實我們運(yùn)行在內(nèi)存中的過程是一個加...
    目前運(yùn)行時閱讀 1,433評論 0 2
  • Cycript簡介 Cycript是Objective-C++翼虫、ES6(JavaScript)、Java等語法的混...
    斑駁的流年無法釋懷閱讀 803評論 0 0
  • 什么是加殼屡萤? 利用特殊的算法珍剑,對可執(zhí)行文件的編碼進(jìn)行改變(比如壓縮、加密)死陆,以達(dá)到保護(hù)程序代碼的目的次慢。 什么是脫殼...
    迷心迷閱讀 806評論 2 1