iOS反编译初探

工具介绍

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查看它的命令

iOS反编译初探_第1张图片
class-dump.png

使用以下命令生成对应.h文件

class-dump -H 可执行App二进制文件路径  生成.h的存放路径

然后我们就可以看到生成的.h文件

iOS反编译初探_第2张图片
test.gif

可以清晰看到生成了很多 .h文件,其中包括了第三推送 jspush和以 fitfun开头的我们公司自己写的类头文件。
可是看到了头文件,我们依然无法获取 .m具体实现方式。

这个时候我们就需要另外一个工具了。

Hopper Disassembler

Hopper Disassembler,一种反向工程工具,可让您对应用程序进行反汇编,反编译和调试。

首先我们下载官方的Hopper Disassembler,进行安装。
请注意官方是需要收费。
这里使用它的免费功能,将二进制文件拖入该工具主界面即可。
每次免费功能只能使用30分钟。到期之后需要再重新打开工具,重新启动免费功能就行了.
打开完二进制文件之后,我们可以看到:

iOS反编译初探_第3张图片
汇编代码

一堆汇编代码,看的我们是一脸懵逼。莫慌,

比如我要分析我司自己App登录模块功能,我就在右侧输入框搜索fitfunlogin

iOS反编译初探_第4张图片
搜索结果.png

然后选中左侧搜索出来对应的内容。
再点右上角的 if(b)f(x)按钮,生成伪代码

iOS反编译初探_第5张图片
生成伪代码

可以看出,部分.m里面的代码就被反编译出来了!!

后记:
不过平常开发我们不必过于担心,首先反编译需要一定成本的!如果我们为了安全,可以加入一些混淆干预代码。

你可能感兴趣的:(iOS反编译初探)