最近研究一个应用,可以在un-jailbreak的情况下打开4G功能,是的,就是很火的“移动流量仪”,想要知道他是如何做到的,正好我的手机已经jailbreak了,打开SSH通道,然后用find -mmin 1 命令来查看1分钟内改动后的文件,发现是修改了系统的一个配置文件。于是就猜测应该是调用了私有的API。就顺着查下去,先从私有API说起吧:
一、关于苹果API:
1、Published API(公开的API):又称 Documented API(文档中记录的API)。是苹果通过 Cocoa Touch 向全世界第三方开发者公开的所有 API 。
2、UnPublished API(未公开API):又称 Undocumented API(文档中未记录的API),是指虽然放在Frameworks框架中,但是却没有在苹果的官方文档中有使用说明、代码介绍等记录的API。按苹果的说法,未公开的API是还不够成熟,可能还会变动的API,等完全成型了后会变成公开的API,但是目前不对其提供承诺,就是系统版本升级后可能会失效。
3、Private API(私有API):指的是SDK下的 PrivateFrameWorks框架下的API,真实存在于 Cocoa Touch 中。私有API是苹果明确规定不能使用的API,一旦你的作品中有私有API,在上传AppStore的时候会100%被拒绝的。如果当作小范围软件的话就可以尝试一下,比如再Cydia上发布,91上发布,条件不会很苛刻的。
(摘自:http://blog.csdn.net/wwmusic/article/details/9167545)
私有API的位置:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/PrivateFrameworks
想要查看这里面的文件,在终端里面输入 open /Applications/Xcode.app/Contents/... 就可以打开这个文件夹了,我们可以看到在Library文件夹下面还有一个文件夹叫frameworks,这里面放的都是可以在XCode里面直接引用的frameworks,也就是上面说的 published API。
我们已经找到了私有API的位置,可是如果打开后会发现里面的文件并不是我们想要的,这就需要利用一个nb的软件:class-dump
网上有很多 class-dump的使用教程有很多,往往还需要一个脚本文件,用来批量处理我们想得到的私有framework,下面说下步骤吧: