3

我一直在阅读很多关于恶意软件编写者如何重新打包现有的 benigh android .apk 并将其重新打包以添加恶意功能的信息。

现在,根据我对 .apk 文件结构的理解,每个 .apk 文件都包含一个 .dex 文件,该文件本质上是将 java 字节转换为 .dex 格式。此外,该应用程序有一个名为 manifest.xml 的二进制 XML 和其他资源文件和资产。如果我们必须向应用程序添加额外的恶意功能,那么我们必须修改 manifest.xml(可以通过将二进制 xml 转换回普通 xml 轻松完成)、资源(可以直接替换)和 .dex 文件.

但是 .dex 文件具有特定的结构。据我说,对其进行的任何修改都应该破坏代码。这些工具使用什么技术来防止代码被破坏,因为如果在原始应用程序中添加一些恶意功能,我们实质上就是添加了一个额外的模块。

有哪些支持 .apk 文件重新打包的工具?

谢谢。

编辑:有些成员可能会觉得讨论逆向工程很冒犯。我是研究 Android 安全的研究生。我需要知道 .apk 文件重新打包是如何工作的,因为这是我的研究课题。此外,公开谈论逆向工程并不是恶意行为——关于逆向工程的书籍已经写过——将逆向工程用于恶意目的是恶意的:)

4

1 回答 1

10

安全信息

在发布模式下启用 proguard。这将使逆向工程变得更加困难。另请查看有关安全性的开发人员培训文档

(来自对此问题的评论)

包签名验证

您可以通过检查签名来验证包是否已重新打包。一些文章可以帮助解决这个问题:

在运行时检索 APK 签名
自我检查 APK 签名。
如何检查 APK 签名。

(原贴广告验证Android apk没有被重新打包?

将 DEX 反编译成 Java

之前回答过一个关于反编译DEX代码的问题。我原来的答案现在可能已经过时了,但其他人已经更新了这个问题。以下是那里列出的一些工具的概述。

更完整的 fred 答案版本

手动方式

首先,您需要一个工具来将 DEX 上的所有(已编译)类提取到 JAR。有一个叫dex2jar的,是一个中国学生做的。

然后,您可以使用jd-gui将JAR 上的类反编译为源代码。生成的源代码应该非常易读,因为 dex2jar 应用了一些优化。

1http ://code.google.com/p/dex2jar/
2: http://java.decompiler.free.fr/?q= jdgui

自动方式

您可以使用APKTool。它会自动提取所有.dex(_ _ _ 反汇编总是比反编译更健壮,尤其是使用 Pro Guard 混淆的 JAR!.asrc

只需告诉 APKTool将 APK解码到一个目录中,然后修改 您想要的内容,最后将其编码回 APK。就这样。

重要提示: APKTool反汇编. 它不反编译。生成的代码不会是 Java 源代码。但是如果您熟悉jasmin,您应该能够阅读它,甚至可以编辑它 。如果您想要 Java 源代码,请查看Manual 方式

(原问题:将 DEX 反编译成 Java 源代码

于 2013-05-25T08:07:14.063 回答