iOS逆向工程三:苹果私有API的获取
2017-02-28 23:35
441 查看
前言
作为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/Headers
文件夹里。
第三种方法(clone)
其实这是一种偷懒的办法,可以直接去nst/iOS-Runtime-Headers
下载就可以了,这里会随时更新。
后话
利用私有API确实很酷,可以根据自己的需要和爱好做出好多很酷的效果,但是如果需要上传AppStore的话,建议不要使用,因为这是苹果官方严令禁止的。如果你觉得可以通过加密的方法躲过审查的话,你可以看看独家工程逆向。相关文章推荐
- class-dump获取iOS私有api
- ios 私有api 获取 设备内 bundleid 用户app列表
- iOS 获取私有api的方法
- [iOS逆向工程] 在汇编语言调试中获取当前实例句柄
- 使用iOS私有API获取安装应用列表
- IOS开发之苹果私有API的使用
- 【iOS逆向工程】从脱壳到获取源码
- iOS私有API获取电话号码
- iOS逆向工程——获取app素材图片
- class-dump获取iOS私有api
- iOS buttonWithType:101 苹果私有api
- iOS开发获取SDK下私有API
- IOS获取手机号(私有API)
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS杂谈14—iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS调用WebView私有API的方法
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- 使用私有api统计ios app运行时间及次数