利用class-dump獲取APP的頭文件


class-dump是一個(gè)Mac端的工具,用它可以查看編譯好的app的頭文件,我們先自己創(chuàng)建一個(gè)工程編譯好測(cè)試用的app,想看別人App里的頭文件?那就需要從AppStore下載別人的App,然后使用砸殼工具,破開(kāi)蘋(píng)果賦予它的保護(hù)機(jī)制,這樣就可以用class-dump一探別人App的????????????端倪了,吸收有用信息。當(dāng)然還有種方式直接去三方助手上下載好已砸殼的App,不用自己砸殼了。關(guān)于class-dump的原理,是用到了Objective-C????語(yǔ)言的Runtime API,例如:

  • 獲取類(lèi)名:
    const char * class_getName(Class cls)
  • 獲取變量列表
    Ivar * class_copyIvarList(Class cls, unsigned int * outCount)
  • 獲取屬性列表
    objc_property_t * class_copyPropertyList(Class cls, unsigned int * outCount)
  • 獲取方法列表
    Method * class_copyMethodList(Class cls, unsigned int * outCount)
  • 獲取協(xié)議列表
    Protocol ** class_copyProtocolList(Class cls, unsigned int * outCount)
    更多原理,自尋探究...

下載class-dump

前往地址http://stevenygard.com/projects/class-dump/下載class-dump-3.5.dmg:

class-dump處理

安裝下載好的class-dump文件,選擇里面的二進(jìn)制可執(zhí)行文件class-dump,拷貝到usr/bin下:



在終端上給其賦予執(zhí)行權(quán)限chmod 777/usr/bin/class-dump

創(chuàng)建一個(gè)項(xiàng)目

創(chuàng)建項(xiàng)目:


里面主要包含兩個(gè)類(lèi)一個(gè)是Student類(lèi),還有一個(gè)是它的分類(lèi):

先看Student類(lèi)的頭文件:

Student的擴(kuò)展:

再看分類(lèi)的頭文件:

command+b編譯好項(xiàng)目之后會(huì)生成一個(gè)對(duì)應(yīng)的可執(zhí)行二進(jìn)制文件,查看其位置:

最后把它拷貝到桌面,方便后續(xù)操作。

class-dump提取頭文件

先cd到桌面路徑下,并在桌面上創(chuàng)建一個(gè)result文件用于存儲(chǔ)提取的頭文件,之后執(zhí)行class-dump -S -s -H Class-dump\ Test -o result


命令中的各個(gè)選項(xiàng)意思,請(qǐng)執(zhí)行class-dump查看:

查看提取結(jié)果

除了多了一個(gè)CDStructures.h文件外,其它文件都能與項(xiàng)目中的文件對(duì)應(yīng)上:

  • BorrowRule-Protocol文件:


  • CFStudent文件:



  • ExaminationRul-Protocol文件:


  • LendRule-Protocol文件:


總結(jié):
1)這里已經(jīng)把分類(lèi)中方法、屬性都已經(jīng)添加到對(duì)應(yīng)的類(lèi)中去了,假若大家對(duì)分類(lèi)原理比較了解的話,應(yīng)該很好理解。
2)這里協(xié)議也單獨(dú)提取出來(lái)了,分別對(duì)應(yīng)原來(lái)類(lèi)中定義的協(xié)議。
3)屬性自動(dòng)生成的對(duì)應(yīng)變量也獲取到了,不難理解class-dump肯定調(diào)用了Runtime獲取變量列表和屬性列表。

前往三方助手下載目標(biāo)App

這里以Mac上的PP助手為例,先選擇下載越獄版的“虛擬毛筆”App,下載完成后查看其ipa包:



我們首先解壓下載好的ipa包,然后點(diǎn)擊Payload下包,顯示包內(nèi)容:



把對(duì)應(yīng)的App可執(zhí)行二進(jìn)制文件復(fù)制到桌面上:

最后執(zhí)行上面class-dump提取頭文件的操作,得到提取結(jié)果如下:



可以看到這個(gè)App里總共有226個(gè)頭文件,非常之少,大點(diǎn)的App都有好幾千個(gè)頭文件,我們不可能一個(gè)個(gè)頭文件去查看,所以需要借助其它工具定位到特定的頭文件中去,歡迎關(guān)注后續(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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