我读了很多关于恶意软件编撰者如何重新打包现有的高级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源代码)