Android应用程序重新包装:为什么不破坏代码?



我读了很多关于恶意软件编撰者如何重新打包现有的高级android .apk并重新打包以添加恶意功能的文章。

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

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

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

谢谢。

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

安全信息

在释放模式下启用proguard。这将使逆向工程更加困难。还可以查看此开发人员安全培训文档。

(来自对这个问题的评论)

包签名验证

您可以通过检查签名来验证包是否已重新打包。有一些文章可以帮助你:

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

(最初发布的广告验证Android apk没有重新包装?)

将DEX反编译成Java

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

的更完整版本弗雷德的答:

手动方式

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

然后,您可以使用jd-gui对JAR中的反编译类到源代码。生成的源代码应该非常可读,如Dex2jar应用了一些优化。

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

自动方式

您可以使用APKTool。它将自动提取所有类(.dex),资源(.asrc),然后将二进制XML转换为人类可读的XML,它还会为你反汇编类。
反汇编总是比反编译更健壮,特别是与Pro Guard混淆的jar !

告诉APKTool 解码 APK到一个目录,然后修改最后编码回APK。就是这样。

重要: APKTool 反汇编。它不会对进行反编译。生成的代码将不是Java源代码。但是你应该可以阅读它,如果你熟悉的话,甚至可以编辑它茉莉花。如果你想要Java源代码,请越过手动通道

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

相关内容

  • 没有找到相关文章

最新更新