iOS逆向-应用类分析工具class-dump

      在逆向过程中,如果想分析一个应用中类的组成以及类中有哪些方法,可以利用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运行,如下图所示:

iOS逆向-应用类分析工具class-dump_第1张图片

然后在product文件中找到编译后的二进制文件,如下图所示:

iOS逆向-应用类分析工具class-dump_第2张图片

这样就得到了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结果(微信为例)

iOS逆向-应用类分析工具class-dump_第3张图片
微信的部分类文件头

随意打开一个头文件,内容如下:

iOS逆向-应用类分析工具class-dump_第4张图片
AACloseNotifyRes.h文件

参考:

https://github.com/nygard/class-dump

http://www.cnblogs.com/zxtx/articles/2307100.html

你可能感兴趣的:(iOS逆向-应用类分析工具class-dump)