我一直在阅读很多关于恶意软件编写者如何重新打包现有的benigh android .apk并重新打包它以添加恶意功能。
现在,根据我对.apk文件结构的理解,每个.apk文件都包含一个.dex文件,该文件基本上是java字节转换为.dex格式。此外,该应用程序还有一个名为manifest.xml的二进制XML以及其他资源文件和资产。如果我们必须向应用程序添加额外的恶意功能,那么我们必须修改manifest.xml(可以通过将二进制xml转换回普通xml轻松完成),资源(可以直接替换)和.dex文件。
但.dex文件有一个特定的结构。据我所知,对它做的任何修改都应该破坏代码。这些工具使用哪些技术来防止代码破坏,因为如果向原始应用程序添加一些恶意功能,我们实际上是添加一个额外的模块。
有哪些工具支持.apk文件重新打包?
感谢。
编辑:有些成员可能会发现讨论逆向工程是冒犯的。 Iam研究Android安全工作的学生。我需要知道.apk文件重新打包是如何工作的,因为这是我的研究课题。此外,公开谈论逆向工程并不是一种恶意行为 - 书籍是在逆向工程上编写的 - 使用逆向工程进行恶意攻击是恶意的:)
答案 0 :(得分:9)
在发布模式下启用proguard。这将使逆向工程变得更加困难。另请查看this developer training documentation on security。
(来自对这个问题的评论)
您可以通过检查签名来验证是否已重新打包包。一些文章可以帮助你:
Retrieving APK signature during runtime。
Self checking an APK signature.
How to check APK signature.
(最初发布广告Verify Android apk has not been repackaged?)
我回答了一个关于过去反编译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 disassembles 。它不会反编译。生成的代码不是Java源代码。但你应该能够 阅读它,如果你熟悉,甚至可以编辑它 jasmin。如果你想要Java源码, 请仔细阅读手动方式。