最近在做企業級程序,需要搞設備的udid等信息,但是ios7把udid私有化了,不公開使用。所以研究了一下ios的私有api。
調查了一下文章,發現這方面的文章不多,國內更是不全,高手們都懶得寫基礎教程哈,我就在此說一下如何調用ios的私有api吧。
首先要使用class-dump 和dumpFrameworks.pl 工具 將ios的framework導出來。
以下是工具的下載地址:
class-dump下載地址http://www.codethecode.com/projects/class-dump/
DumpFrameworks.pl原來的下載地址不能用了,我在github上的別人的越獄程序里面找到的。
下載地址:https://github.com/shuhongwu/HackSpringDemo/blob/master/DumpFrameworks.pl
將下載好的 class-dump 放入usr/local/bin 下.
如果 ‘/usr/local/bin’ 不知道在哪里,可以在terminal 下輸入 ‘open -a Finder /usr/local/bin’ 以便打開目錄.
這個bin文件夾 就是所有命令行的可執行文件所在地,並不一定是這個目錄,要看各自的系統。
因為dumpFrameworks.pl中對ios庫的版本路徑可能不一定正確了,所以要自己手動改正。
用terminal直接執行dumpFrameworks.pl就可以了。
會將所有到處的頭文件,放到user/Headers文件夾下。
將想用的頭文件,組成xxx.framework/Headers的樣式。導入工程。
但是bulidsetting 設置framework的search path 時要設置真實的私有庫路徑,因為我們要用它的可執行文件,只有頭文件是不行的。
例如:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks
這樣就可以調用ios的私有庫了
成功用他的私有庫 調取了 機器的udid。
-----------------2014/02/23----------------更新
網友對我提問,我就又寫了一個demo,結果udid 讀出來是null。最后在stackoverflow上查到是蘋果做過處理了,據說是驗證機制,系統和越獄用戶可以實現這個方法,其他得不到結果,目前還不知道通過其他方式獲取。如果有知道的看到了能回復一下,萬分感謝。
---------------demo------------------------------
https://github.com/hikoming/TestPrivate