Android 反编译和重新编译APK文件

Android 反编译和重新编译APK文件,android,reverse-engineering,dex,decompiler,Android,Reverse Engineering,Dex,Decompiler,我目前正在分析一些android恶意软件,我需要反编译APK文件。通过阅读一篇文章和许多其他类似的答案,我知道我们可以提取java源代码和其他资源,创建一个新项目并将这些文件放入其中,进行一些修改并编译该项目。这种方法是否适用于每个APK文件?如果我们的目标是在java源代码中进行非常少的修改或没有修改,那么这种方法是否适用于每个APK文件?如果没有,主要原因是什么 作为另一个问题,我记得我在某个地方读到(现在找不到)说,将dex转换为jar(使用dex2jar等工具)或将dex反编译为java

我目前正在分析一些android恶意软件,我需要反编译APK文件。通过阅读一篇文章和许多其他类似的答案,我知道我们可以提取java源代码和其他资源,创建一个新项目并将这些文件放入其中,进行一些修改并编译该项目。这种方法是否适用于每个APK文件?如果我们的目标是在java源代码中进行非常少的修改没有修改,那么这种方法是否适用于每个APK文件?如果没有,主要原因是什么

作为另一个问题,我记得我在某个地方读到(现在找不到)说,将dex转换为jar(使用dex2jar等工具)或将dex反编译为java(使用JADX等工具)在某种程度上是有损的,会导致信息丢失。有这样的概念吗


我问这些问题是出于教育目的,我的目标不是做任何非法的事情。

根据我的经验,除了最琐碎的代码外,你不能依靠大多数反编译器生成实际的可重新编译代码。将dex转换回jar应该不会有损。毕竟,这段代码很可能是从一个罐子开始的。虽然我不能自信地说dex2jar不是无损的。虽然我可能有点偏见,但我认为你最好分解apk并修改字节码,或者使用类似dexlib2的东西以编程方式修改字节码。@JesusFreke是的,我见过一些例子,说明了如何编辑dex字节码以进行一些小的更改,但对于大的更改,这会变得复杂。谢谢你的评论。@JesusFreke我认为jar->dex和dex->jar都是有损的,因为格式之间存在细微的差异。例如,dex没有multianewarray,因此必须取消数组创建。