反编译

道高一尺魔高一丈, ios没有传说中的安全.

现状:   自己编写的App上架到AppStore, 被apple 加密. 但是在 DeBug下产生的 ipa(苹果应用程序文件iPhoneApplication) 和 release下的ipa包或者是渠道包(各种应用市场能下的ipa包)都能直接反编译。

工具:

clutch   dumpdecrypted gdb AppCrackr

class-dump       http://stevenygard.com/projects/class-dump/

Hopper Disassembler   http://www.onlinedown.net/soft/558448.htm#down

class-dump   class-dump,是可以把Objective-C运行时的声明的信息导出来的工具。 是一个可以导入其他应用的工具, 是逆向工程中的一个入门级工具.

1 下载完后,将dmg文件中的 class-dump复制到 /usr/bin/目录下 ,  如果是OS X 10.11 及以后 版本,因为没有/usr/bin文件夹的写权限,所以将class-dump复制到/usr/local/bin/class-dump即可。

2  打开Terminal,执行命令赋予其执行权限:

sudo chmod 777/usr/bin/class-dump  

反编译_第1张图片

3  使用class-dump导出头文件的命令格式: class-dump -H 需要导出的框架路径

-o 导出的头文件存放路径


反编译_第2张图片
反编译_第3张图片


我们run一下工程,然后打开  Products  文件夹下,  xxxxxx.app 所在目录,显示包内容,拿到二进制文件。

在桌面创建文件夹,将二进制文件拖入 终端执行如下操作

反编译_第4张图片
反编译_第5张图片


反编译_第6张图片

没有声明的方法也被dump出来


接下来使用  Hopper Disassembler 拿到方法的具体实现  打开应用,直接将二进制文件拖入 会看到一堆汇编语言   ---->  点右上角的if(b)f(x);按钮,能看到这个方法的伪代码,大部分的时候我们能从伪代码中看出我们需要的信息。

预防:只要做好核心代码,做好混淆就行了,比如涉及到密码,核心算法。 可以看到具体的方法实现

反编译_第7张图片

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