作為iOS開發人員,相信大多數伙伴都對怎么獲取iOS的私有API很有興趣,最近通過查找資料,總結了以下三種方法,希望對你有用。
第一種(class-dump)
不得不說這是一個很棒的工具,安裝和使用都很方便。
安裝
去nygard/class-dump 下載工程,編譯之后就會獲得class-dump,把它放到
"/usr/bin"
文件夾里,注意,這個地址根據系統的不同有所差別,我的系統是
10.10.5
,低版本的系統有些是
"/usr/local/bin"
,這個根據根據自己的系統注意一下即可。
注意:在iOS9之前,即Xcode7之前,可以直接去Class-dump即可,但是iOS9之后用這個版本導出的話會報下錯
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的權限
$ chmod 777 class-dump
注意,這個步驟得在class-dump所在的文件夾的根目錄下執行。
然后就可以使用了,具體如下:
class-dump -H /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/PrivateFrameworks/ChatKit.framework -o <存儲地址>
這樣就會導出ChatKit.framework框架未公開的頭文件到你存儲的地方。
第二種(class-dump + DumpFramework.pl)
這個方法比第一種方法強大的地方就是可以通過一條命令把所有的私有API的頭文件導出到一個叫
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'
一定要換行。還有這里導出的是模擬器的私有API,因為class-dump 作用的對象必須是未經過加密的可執行文件,而從 app store 下載的 app 都是經過簽名加密的,所以兩個iPhoneSimulator.platform地方不能換成iPhoneOS.platform.
使用
cd到DumpFrameworks.pl的路徑,並執行
$ ./DumpFrameworks.pl
如沒有問題的話,所有需要的頭文件都已經導出到
~/user/header
文件夾里。
第三種方法(clone)
其實這是一種偷懶的辦法,可以直接去
nst/iOS-Runtime-Headers 下載就可以了,這里會隨時更新。
后話
利用私有API確實很酷,可以根據自己的需要和愛好做出好多很酷的效果,但是如果需要上傳AppStore的話,建議不要使用,因為這是蘋果官方嚴令禁止的。如果你覺得可以通過加密的方法躲過審查的話,你可以看看獨家工程逆向。