逆向2(class_dump和dumpdecrypted)

otool工具簡介

otool(object file displaying tool) :目標(biāo)文件的展示工具【剑可以用來發(fā)現(xiàn)應(yīng)用中使用到了哪些系統(tǒng)庫乌妒,調(diào)用了其中哪些方法,使用了庫中哪些對象及屬性追葡,它是Xcode自帶的常用工具腺律。
在mac終端輸入otool,就可以看到常用的命令以及參數(shù)

  • 例子: 查看支付寶依賴庫
//查找支付寶可執(zhí)行文件的位置
iPhone:/tmp root# ps -e | grep AlipayWallet
2162 ??         0:22.33 /var/mobile/Containers/Bundle/Application/50C881E4-8116-40C8-9922-3963DBD155EE/AlipayWallet.app/AlipayWallet
2581 ttys000    0:00.01 grep AlipayWallet
//將可執(zhí)行文件拷貝到mac桌面上的test文件夾下
iPhone:/tmp root# scp /var/mobile/Containers/Bundle/Application/50C881E4-8116-40C8-9922-3963DBD155EE/AlipayWallet.app/AlipayWallet zl@192.168.0.102:/Users/zl/Desktop/test
//回到mac終端查看用到的依賴庫
otool -L AlipayWallet

class_dump

  • 簡介
    可以將Mach-O文件中的Objective-C運(yùn)行時的聲明的信息導(dǎo)出,即編寫OC代碼時的 .h文件宜肉。classdump是對”otool -ov” 信息的翻譯匀钧,以一種我們熟悉的易讀的方式呈現(xiàn)。
    下載地址 http://stevenygard.com/projects/class-dump/

  • 安裝方式
    下載class-dump后谬返,將class-dump復(fù)制到/usr/local/bin目錄下之斯,
    (需要把文件拷貝到/usr/bin目錄下,但是mac這個文件夾權(quán)限不開放,不管用什么命令都無法將文件拷到這個目錄下遣铝,可以/usr/local/bin用這個路徑代替/usr/bin路徑 因?yàn)闀葟?usr/local/bin目錄加載 然后再加載/usr/bin目錄)
    sudo cp /Volumes/class-dump-3.5/class-dump /usr/local/bin
    在終端中輸入class-dump佑刷,顯示class-dump的版本后,就可以正常使用class-dump的命令了,如果沒顯示,賦予一下權(quán)限
    sudo chmod 777 /usr/bin/class-dump

  • class_dump使用(class-dump只能導(dǎo)出未經(jīng)加密的App的頭文件)

得到class-dump的可執(zhí)行文件以后,就可以導(dǎo)出應(yīng)用的類的頭文件了

命令如下:

class-dump -H 砸殼后文件 -o headers存放目錄

例子:看下SpringBoard的頭文件

iPhone:/tmp root# ps -e | grep SpringBoard
 1739 ??        10:14.78 /System/Library/CoreServices/SpringBoard.app/SpringBoard
 2586 ttys000    0:00.01 grep SpringBoard
iPhone:/tmp root# scp /System/Library/CoreServices/SpringBoard.app/SpringBoard zl@192.168.0.102:/Users/zl/Desktop/test
//mac終端 將頭文件保存在test文件夾下面
class-dump -s -S -H SpringBoard -o ./test

以下是 class-dump參數(shù)含義,終端里輸入class-dump就可以看到

-a  顯示實(shí)例變量偏移

-A  顯示實(shí)現(xiàn)地址

–arch選擇一個指定的架構(gòu)酿炸,如ppc, ppc7400, ppc64, i386, x86_64

-C只顯示同正則表達(dá)式匹配的類

-f在方法名中查找字符串

-H  在當(dāng)前目錄生成頭文件项乒,或者在用-o選項(xiàng)指定的目錄生成

-I    對類,目錄梁沧,協(xié)議 按照繼承關(guān)系(inheritance)進(jìn)行排序(覆蓋-s選項(xiàng))

-o為-H選項(xiàng)指定輸出目錄

-r  遞歸擴(kuò)展framework檀何,并修復(fù)VM共享庫

-s  按名稱對classes和categories進(jìn)行排序

-S  按名稱對方法(method)進(jìn)行排序

dumpdecrypted砸殼

  1. 安裝
mkdir Code
cd Code/
git clone https://github.com/stefanesser/dumpdecrypted.git
cd dumpdecrypted/
make

上面的make命令執(zhí)行完畢后,會在當(dāng)前目錄下生成一個dumpdecrypted.dylib文件,這就是砸殼所要用到的频鉴。該文件生成一次可重復(fù)使用栓辜。

  1. 砸殼過程
//定位要砸殼的App的Document目錄
iPhone:/ root# cycript -p WeChat
cy# [[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
#"file:///var/mobile/Containers/Data/Application/DCAB7824-7EF6-4F18-813B-39E52FDC2CA7/Documents/"
//退出cycript 去到Documents目錄
cy# 
iPhone:/ root# cd /var/mobile/Containers/Data/Application/DCAB7824-7EF6-4F18-813B-39E52FDC2CA7/Documents/
//將dumpdecrypted.dylib拷貝到當(dāng)前目錄
iPhone:/var/mobile/Containers/Data/Application/DCAB7824-7EF6-4F18-813B-39E52FDC2CA7/Documents root# scp zl@192.168.0.102:/Users/zl/Desktop/dumpdecrypted/dumpdecrypted.dylib .
//獲取可執(zhí)行文件路徑   
iPhone:/var/mobile/Containers/Data/Application/DCAB7824-7EF6-4F18-813B-39E52FDC2CA7/Documents root# ps -e | grep WeChat
//開始砸殼
iPhone:/var/mobile/Containers/Data/Application/DCAB7824-7EF6-4F18-813B-39E52FDC2CA7/Documents root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/008FD01E-9421-40B7-A511-FCC23D175C3A/WeChat.app/WeChat
//結(jié)束后在documents里面看到WeChat.decrypted,將該文件拷貝到桌面
iPhone:/var/mobile/Containers/Data/Application/DCAB7824-7EF6-4F18-813B-39E52FDC2CA7/Documents root# scp WeChat.decrypted zl@192.168.0.102:/Users/zl/Desktop/test
// 來到mac終端用class-dump獲取.h文件
cd /Users/zl/Desktop/test
class-dump -s -S -H WeChat.decrypted -o ./decrypetfile
補(bǔ)充

StoreApp對沙盒以外的絕大多數(shù)目錄沒有寫權(quán)限垛孔。dumpdecrypted.dylib要寫一個decrypted文件藕甩,但它是運(yùn)行在StoreApp中的,與StoreApp的權(quán)限相同周荐,那么它的寫操作就必須發(fā)生在StoreApp擁有寫權(quán)限的路徑下才能成功狭莱。StoreApp一定是能寫入其Documents目錄的,因此我們在Documents目錄下使用dumpdecrypted.dylib時概作,保證它能在當(dāng)前目錄下寫一個decrypted文件腋妙,這就是把dumpdecrypted.dylib拷貝到Documents目錄下操作的原因。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讯榕,一起剝皮案震驚了整個濱河市骤素,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌愚屁,老刑警劉巖济竹,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異霎槐,居然都是意外死亡送浊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門丘跌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罕袋,“玉大人,你說我怎么就攤上這事碍岔≡⊙叮” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵蔼啦,是天一觀的道長榆纽。 經(jīng)常有香客問我,道長捏肢,這世上最難降的妖魔是什么奈籽? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鸵赫,結(jié)果婚禮上衣屏,老公的妹妹穿的比我還像新娘。我一直安慰自己辩棒,他們只是感情好狼忱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布膨疏。 她就那樣靜靜地躺著,像睡著了一般钻弄。 火紅的嫁衣襯著肌膚如雪佃却。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天窘俺,我揣著相機(jī)與錄音饲帅,去河邊找鬼。 笑死瘤泪,一個胖子當(dāng)著我的面吹牛灶泵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播对途,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赦邻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掀宋?” 一聲冷哼從身側(cè)響起深纲,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤仲锄,失蹤者是張志新(化名)和其女友劉穎劲妙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體儒喊,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镣奋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了怀愧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨颈。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芯义,靈堂內(nèi)的尸體忽然破棺而出哈垢,到底是詐尸還是另有隱情,我是刑警寧澤扛拨,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布耘分,位于F島的核電站,受9級特大地震影響绑警,放射性物質(zhì)發(fā)生泄漏求泰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一计盒、第九天 我趴在偏房一處隱蔽的房頂上張望渴频。 院中可真熱鬧,春花似錦北启、人聲如沸卜朗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聊替。三九已至楼肪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惹悄,已是汗流浹背春叫。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泣港,地道東北人暂殖。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像当纱,于是被迫代替她去往敵國和親呛每。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

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