class-dump 使用
class-dump 官网地址:这里
我这里下载的是 class-dump-3.5.dmg 版本的。双击.dmg 文件,将 拉倒 /usr / local / bin 目录下[用open /usr 命令打开用户文件夹],这样就可以在终端使用 class-dump 命令了。
这里我演示dump系统自带的计算器,导出它的头文件。
命令如下:
class-dump -H /Applications/Calculator.app -o /Users/Rio/Desktop/calculate\ heads
解释:
/Applications/Calculator.app 是计算器app的路径
/Users/Rio/Desktop/calculate\ heads 是存放dump出来头文件的文件夹路径
-H表示导出头文件
-o表示导出头文件的保存目录参数
- class-dump 3.5 (64 bit)
- Usage: class-dump [options] <mach-o-file>
- where options are:
- -a show instance variable offsets
- -A show implementation addresses
- --arch <arch> choose a specific architecture from a universal binary (ppc, ppc64, i386, x86_64)
- -C <regex> only display classes matching regular expression
- -f <str> find string in method name
- -H generate header files in current directory, or directory specified with -o
- -I sort classes, categories, and protocols by inheritance (overrides -s)
- -o <dir> output directory used for -H
- -r recursively expand frameworks and fixed VM shared libraries
- -s sort classes and categories by name
- -S sort methods by name
- -t suppress header in output, for testing
- --list-arches list the arches in the file, then exit
- --sdk-ios specify iOS SDK version (will look in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS<version>.sdk
- --sdk-mac specify Mac OS X version (will look in /Developer/SDKs/MacOSX<version>.sdk
- --sdk-root specify the full SDK root path (or use --sdk-ios/--sdk-mac for a shortcut)
运行命令,可以看到已经dump出头文件了,如下所示:
class-dump 虽然非常有用,但有时我们会发现 class-dump 执行失败,无法得到我们想要的 .h 文件,或者 .h 文件的内容是加密的密文。出现这种现象的原因是:class-dump 额作用对象必须是未经加密的可执行文件,而从 App Store 下载的 App 都是经过签名加密的,可执行文件被加上了一层“壳”。可以使用 AppCrackr 来自动砸壳。[注:还有一个更简单的办法就是通过越狱渠道下载应用,这些ipa都是无壳的,可以直接dump]
#dump出的.h文件中的属性和方法和实际的排序是相反的。