前言
作為iOS開發(fā)人員霹俺,相信大多數(shù)伙伴都對怎么獲取iOS的私有API很有興趣污秆,最近通過查找資料拍屑,總結(jié)了以下三種方法,希望對你有用。
第一種(class-dump)
不得不說這是一個很棒的工具攀痊,安裝和使用都很方便桐腌。
安裝
去nygard/class-dump
下載工程,編譯之后就會獲得class-dump苟径,把它放到
"/usr/bin"
文件夾里案站,注意,這個地址根據(jù)系統(tǒng)的不同有所差別棘街,我的系統(tǒng)是
10.10.5
蟆盐,低版本的系統(tǒng)有些是
"/usr/local/bin"
,這個根據(jù)根據(jù)自己的系統(tǒng)注意一下即可遭殉。
注意:在iOS9之前石挂,即Xcode7之前,可以直接去Class-dump即可险污,但是iOS9之后用這個版本導(dǎo)出的話會報下錯
Input file (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/PrivateFrameworks/ChatKit.framework) doesn't contain an executable.
這是因為iOS9增加了一個叫
"the __DATA_CONST segment"
的東東痹愚。
使用
首先修改class-dump的權(quán)限
$ chmod 777 class-dump
注意,這個步驟得在class-dump所在的文件夾的根目錄下執(zhí)行蛔糯。
然后就可以使用了,具體如下:
class-dump -H /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/PrivateFrameworks/ChatKit.framework -o <存儲地址>
這樣就會導(dǎo)出ChatKit.framework框架未公開的頭文件到你存儲的地方拯腮。
第二種(class-dump + DumpFramework.pl)
這個方法比第一種方法強大的地方就是可以通過一條命令把所有的私有API的頭文件導(dǎo)出到一個叫
header
的文件夾里。
安裝
class-dump的安裝見第一種方法蚁飒,DumpFramework.pl可以去shuhongwu/HackSpringDemo
下載动壤,放在任意目錄下都可。
配置
打開DumpFrameworks.pl文件淮逻,把下面的地址改成你自己的地址
dump_frameworks('/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks',
'Frameworks');
dump_frameworks('/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/PrivateFrameworks',
'PrivateFramework');
注意:
'Frameworks'
一定要換行琼懊。還有這里導(dǎo)出的是模擬器的私有API,因為class-dump 作用的對象必須是未經(jīng)過加密的可執(zhí)行文件爬早,而從 app store 下載的 app 都是經(jīng)過簽名加密的哼丈,所以兩個iPhoneSimulator.platform地方不能換成iPhoneOS.platform.
使用
cd到DumpFrameworks.pl的路徑,并執(zhí)行
$ ./DumpFrameworks.pl
如沒有問題的話筛严,所有需要的頭文件都已經(jīng)導(dǎo)出到
~/user/header
文件夾里醉旦。
第三種方法(clone)
其實這是一種偷懶的辦法,可以直接去
nst/iOS-Runtime-Headers
下載就可以了脑漫,這里會隨時更新髓抑。
后話
利用私有API確實很酷咙崎,可以根據(jù)自己的需要和愛好做出好多很酷的效果优幸,但是如果需要上傳AppStore的話,建議不要使用褪猛,因為這是蘋果官方嚴(yán)令禁止的网杆。如果你覺得可以通過加密的方法躲過審查的話,你可以看看獨家工程逆向。