虽然iOS系统比其他手机操作系统相对安全,但这种安全并不是绝对的。我一直相信道路比魔法高一英尺。本文想以实际例子告诉你如何反编译应用程序,从某种角度来看,iOS没有传说中的“安全”。
这里只给你最简单的结论,具体原理和工具的详细使用,请自己谷歌,为什么要这样做,因为我想用最简单的语言,这样没有汇编基础的学生也能理解iOS 该应用程序可以“有条件地”被反编译首先,告诉你一个不幸的消息,把它放在应用程序上 Storeapp,被apple加密。
因此,标题是“有条件”进行反编译令人欣慰的是,debug下生成的ipa或release下的ipa包或渠道包(各种应用市场都可以下的ipa包)可以直接反编译脱下“二级制文件”外套当然,引言已经说过,即使是apple加密的ipa,也可以反编译,但是比较麻烦。
来吧,给你几个工具来解除apple的加密clutchdumpdecryptedgdbAppCrackr由于Appcrackr被很多开发者吐槽,这个傻瓜式的解密会严重导致盗版泛滥,所以这个工具已经很难用了。
我不会在这里展示demo我觉得如果我把app放在这里 反编译Store上的东西并发送到互联网上我觉得我的程序员生涯可能会结束如何使用工具反编译这里将介绍两个工具class-dump和Hopper Disassembler。
首先,让我们先推出一个最简单的应用程序来制作小白鼠看图片,就是这样我只改了ViewControllerViewController.hViewController.m从代码可以看出,我写了两种方法,testclasdump和testhideclasdump,后者没有声明.h中(ps:我想测试一下是否可以反编译)。
ok,前戏都完成了,可以开始工作了让我们run看看项目,然后打开Products文件夹下的Decompilingtestest.app目录,显示包内容,获取二进制文件二进制文件然后我把它复制到桌面上,执行下面的命令,然后在项目中得到它.h文件。
执行命令得到以下结果,我们来看看Viewcontroler.h里面,你能得到什么方法?结果事实证明,没有声明的方法也是dump出来的下一步我们要做的就是看能不能具体实现这两种方法接下来,我们用Hopper 试试Disasembler。
Hopper 只要把二进制文件拖进去,Disasembler的用法就很简单了看看拖进去后的结果反编译之后此时心中一万头草泥马飞奔而过,what’s the fk!!婴儿无法理解一堆汇编语言(当然,ret应该是return的意思,我猜)。
在感兴趣的地方生成伪代码Don’t worry!点击右上角的if(b)f(x);按钮,我们可以看到这种方法的伪代码,大多数时候我们可以从伪代码中看到我们需要的信息结果如下:伪代码1伪代码2到目前为止,两种方法都是反编译的!!。
这里需要注意的是,即使方法没有声明.也可以在h中被dump反编译,然后可以反编译如何防止反编译?说了这么多,我们需要像Java那样添加各种复杂的混淆来预防事实上,我认为没有必要反编译本身的成本非常高代码太多了。
一个接一个地反编译是痛苦的即使有伪代码,也需要理解此外,即使有些代码有伪代码,也很难理解只要做好核心代码和混淆,比如涉及密码和核心算法。总结没有绝对安全的系统,也没有黑客无法打破的系统,只需要时间。
来源:德斯软件资讯