工具介绍
class-dump
class-dump是用来dump目标文件的类信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件。
将dmg文件中的class-dump
复制到/usr/bin
目录下,并且使用终端授权:
sudo chmod 777 /usr/bin/class-dump
然后再终端输入class-dump
查看它的命令
使用以下命令生成对应.h文件
class-dump -H 可执行App二进制文件路径 生成.h的存放路径
然后我们就可以看到生成的.h
文件
可以清晰看到生成了很多
.h
文件,其中包括了第三推送jspush
和以fitfun
开头的我们公司自己写的类头文件。可是看到了头文件,我们依然无法获取
.m
具体实现方式。
这个时候我们就需要另外一个工具了。
Hopper Disassembler
Hopper Disassembler,一种反向工程工具,可让您对应用程序进行反汇编,反编译和调试。
首先我们下载官方的Hopper Disassembler,进行安装。
请注意官方是需要收费。
这里使用它的免费功能,将二进制文件拖入该工具主界面即可。
每次免费功能只能使用30分钟。到期之后需要再重新打开工具,重新启动免费功能就行了.
打开完二进制文件之后,我们可以看到:
一堆汇编代码,看的我们是一脸懵逼。莫慌,
比如我要分析我司自己App登录模块功能,我就在右侧输入框搜索fitfunlogin
然后选中左侧搜索出来对应的内容。
再点右上角的
if(b)f(x)
按钮,生成伪代码
可以看出,部分.m
里面的代码就被反编译出来了!!
后记:
不过平常开发我们不必过于担心,首先反编译需要一定成本的!如果我们为了安全,可以加入一些混淆干预代码。