使用class-dump导出其他应用头文件
class-dump是一个可以导入其他应用的工具,算是逆向工程中一个入门级的工具。class-dump是用来dump目标文件的类信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件。官方介绍如下:
This is a command-line utility for examining the Objective-C runtime information stored in Mach-O files. It generates declarations for the classes, categories and protocols. This is the same information provided by using ‘otool -ov’, but presented as normal Objective-C declarations, so it is much more compact and readable.
1、 下载地址:http://stevenygard.com/projects/class-dump。
打开链接后,选择[class-dump-3.5.dmg]进行下载。下载完成之后,将dmg文件中的class-dump复制到/usr/bin目录。这里可能有些电脑无法复制到/usr/bin目录,因为一些mac用户在升级系统之后,电脑启用了SIP(System Integrity Protection),增加了rootless机制,导致即使在root权限下依然无法修改文件,在必要时候为了能够修改下面的文件,我们只能关闭该保护机制。
1)重启mac,过程中按住 command+R,进入保护模式
2)打开terminal终端,输入
csrutil disable
3)再次重启,即可对 usr/bin 目录下文件进行修改
4)如果要恢复保护机制,重新进入保护模式,输入
csrutil enable
2、将dmg文件中的class-dump复制到/usr/bin目录,并在终端执行如下执行进行赋权:
sudo chmod 777 /usr/bin/class-dump
注意:class-dump的作用对象必须是未经加密的可执行文件,而从App Store下载的App都是经过加密签名的,相当于有一层“壳”,class-dump应付不了这样的文件。一般要先用AppCrackr来砸壳,砸壳方式在这里不做介绍。有一个简单的方法,在一些第三方软件下载应用的越狱安装版,这样版本的壳已经被手动砸开了。
在xcode里随便写个测试demo,run一下工程,然后打开Products文件夹下的DecompilingTest.app所在目录,显示包内容,拿到二进制文件。
然后复制到桌面,执行下述命令,即可拿到工程中的.h文件。
拿到的.h里面,能拿到什么方法