在逆向过程中,如果想分析一个应用中类的组成以及类中有哪些方法,可以利用class-dump导出类的头文件和头文件中的方法,不过在class-dump前,必须要先将应用砸壳,比如用dumpdecrypted来进行砸壳操作,然后导出砸壳后的应用。
一、class_dump简介
class-dump是一个命令工具,可以对砸壳后的二级制文件进行分析,导出头文件,其原理是根据应用的MACH-O文件中类和方法信息,将应用中的类和方法导出来的。
class-dump下载地址:https://github.com/nygard/class-dump
二、class-dump编译
下载完class-dump的源文件以后,用xcode打开文件,然后选择class-dump运行,如下图所示:
然后在product文件中找到编译后的二进制文件,如下图所示:
这样就得到了class-dump的可执行文件了。
三、class-dump的使用
得到class-dump的可执行文件以后,就可以导出应用的类的头文件了
我使用的命令如下:
~/Documents/class-dump -s -S -H --arch arm64 ~/Desktop/WeChat.decrypted -o ~/Desktop/header6.3-arm64
以下是 class-dump [options]选项的参数含义
-a 显示实例变量偏移
-A 显示实现地址
–arch选择一个指定的架构,如ppc, ppc7400, ppc64, i386, x86_64
-C只显示同正则表达式匹配的类
-f在方法名中查找字符串
-H 在当前目录生成头文件,或者在用-o选项指定的目录生成
-I 对类,目录,协议 按照继承关系(inheritance)进行排序(覆盖-s选项)
-o为-H选项指定输出目录
-r 递归扩展framework,并修复VM共享库
-s 按名称对classes和categories进行排序
-S 按名称对方法(method)进行排序
四、class-dump结果(微信为例)
随意打开一个头文件,内容如下:
参考:
https://github.com/nygard/class-dump
http://www.cnblogs.com/zxtx/articles/2307100.html