iOS逆向工程-OSX工具集之class-dump

一、介绍及安装

1.简介

class-dump就是用来dump目标对象的class信息的工具。它利用OC语言的runtime特性,将存储在Mach-O文件中的头文件信息提取出来,并生成对应的.h文件。

2.安装

2.1 在http://stevenygard.com/projects/class-dump下载最新版的class-dump安装包。

2.2 双击安装包 -> 将文件里的class-dump复制到"/usr/local/bin"目录下 -> 打开终端,执行”sudo chmod 777 /usr/local/bin/class-dump“命令赋予其执行权限。

2.3 运行class-dump(即在命令行直接输入class-dump命令)即可看到相关参数。

二、用法

1.将需要class-dump的.app文件(测试时可直接从Xcode的Products直接拿)拷贝到指定位置目录下,如/User/Desktop/test/test.app

2.获取应用程序的包名:

2.1 如果是自己的测试应用,肯定已经知道包含是什么,则不再需要执行2.2的操作。

2.2 非自己的测试应用时,从终端进入到.app目录下(cd /User/Desktop/test/test.app/) -> 使用Xcode自带的plutil命令工具查看包名(plutil -p Info.plist | grep CFBundleExecutable) -> 得到包名。

3.dump应用程序,获取所有头文件:

把前面应用的头文件class-dump到指定目录下(如:/User/Desktop/test/path/headers/),并将头文件内容按名字排序(class-dump -S -s -H 包名 -o /User/Desktop/test/path/headers/)

三、总结

1.通过对比我们可以看到class-dump出来的头文件与我们的应用源头文件几乎一样,可能参数有细小的区别,排序后的可读性也更高。

2.class-dump不仅可以提取自己的app里的头文件,也可以提取别人app里面的头文件,但是现在的应用中引用了大量的第三方框架,而class-dump出来的头文件是包括所有的,所以分析起来比较困难,需要结合其它方式来进一步缩小目标范围。

3.需要注意的是:从Appstore下载的app都是经过加密的,可执行文件被加上了一层外壳,class-dump无法直接作用于这样的文件。需要使用其它方式将外壳破坏才可以。

/* 本文参考《iOS应用逆向工程》一书所进行的总结,所有步骤经过亲自验证,可能与书中有微小的出入 */

你可能感兴趣的:(iOS逆向工程-OSX工具集之class-dump)