在Android上传播恶意软件(甚至只是 不良 应用程序)的最常见策略之一是重新打包应用程序。 在他的RSA Conference演讲中,viaForensics的Pau Oliva Fora展示了对Android应用程序进行反向工程仅需几分钟。
获取您的应用
Fora说,对应用程序进行逆向工程的第一步是让自己获得一个应用程序。 尽管它们在您的手机上看起来很漂亮,但Android应用(或APK)实际上只是具有新扩展名的ZIP文件。 从代码到它可能需要的任何媒体,应用程序都需要在其中运行。
有多种获取APK的方法。 如果您有要在Android上进行反向工程的应用程序,则可以使用ASTRO等文件管理器将备份保存到SD卡。 也可以将Android连接到计算机,然后使用Android调试桥将应用程序传输到PC。 您还可以使用在线工具从Google Play中提取APK。
拉开它
使用APK后,您需要将其转换为更有用的功能。 为此,Fora提供了两种选择。 您可以使用Apktool之类的工具 反汇编 目标,该工具会将APK的已编译应用程序代码文件(Dalvik Executable或DEX)转换为诸如Smali的汇编语言。 或者,您可以 反编译 ,将DEX转换为Java存档(JAR),然后转换为Java。
Fora指出,由于某些数据可能会在反编译过程中丢失,因此最好使用考虑到Android的反编译器。 这跳过了JAR步骤,将DEX直接转换为Java。
对于不愿自行追踪所有这些工具的人们,Fora建议使用Santoku。 这是viaForensics发行的特殊Linux版本,其中预装了您需要拆解,修改和重新打包Android应用程序所需的所有工具。 这是我们过去编写的功能强大的数字取证工具。
快速倒退
如果您在最后几段中睡着了,那么这里就是您醒来的地方。 Fora使用Santoku,获取了他创建的一个非常基本的Android应用并将其拆开。 然后,他浏览了特定行的代码,对其进行了修改,重新打包,签名,将修改后的应用程序重新安装到他的Android上并启动了它。 整个过程不到五分钟。
现在,Fora是一个非常简单的示例。 该应用程序非常基础,没有混淆的代码。 但是,他的示威具有深远的意义。 Fora表示:“您可以执行此操作来更改任何Android应用程序的行为。”仅举几个例子,列举了游戏中的无限生命或免费应用程序中的付费功能。
一个更恐怖的例子? 只需将您的注意力转向我们所见过的任何恶意克隆应用程序。 在下载该粗略的FlappyBird克隆之前,请考虑一下。