道高一尺魔高一丈, 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
3 使用class-dump导出头文件的命令格式: class-dump -H 需要导出的框架路径
-o 导出的头文件存放路径
我们run一下工程,然后打开 Products 文件夹下, xxxxxx.app 所在目录,显示包内容,拿到二进制文件。
在桌面创建文件夹,将二进制文件拖入 终端执行如下操作
没有声明的方法也被dump出来
接下来使用 Hopper Disassembler 拿到方法的具体实现 打开应用,直接将二进制文件拖入 会看到一堆汇编语言 ----> 点右上角的if(b)f(x);按钮,能看到这个方法的伪代码,大部分的时候我们能从伪代码中看出我们需要的信息。
预防:只要做好核心代码,做好混淆就行了,比如涉及到密码,核心算法。 可以看到具体的方法实现