1

我正在尝试编辑一个 .apk 文件来更改一些变量或在其中的 java 文件中添加一些函数。

所以,首先,我使用 apktool 来反编译 .apk。然后,我使用 dex2jar 将 classes.dex 制作为 classes.jar 并使用 jd-gui 读取文件。如您所知,.jar 中的文件都是 .class 文件,它们是二进制文件,无法读取,所以我尝试使用将 .jar 转换为 java 文件

'Save all sources' 

在 jd-gui 中,它为我提供了可读和可编辑的 java 文件,这对我有好处。然后我编辑了java文件并将它们制作成.jar文件使用

'jar cf newjar.jar javafiles'

然而问题是,

jar2dex 命令与新的 .jar 文件,编辑的总是失败,原因是“没有指定类文件”。

我认为这是因为我是用 .java 文件而不是 .class 文件制作的。所以我该怎么做?我是否必须使用 javac 命令将所有 java 文件转换为 .class 文件?或者有什么想法?

4

2 回答 2

0

如果您有 Java 文件和提取的资源,您应该能够将它们导入常规 Android 项目并使用标准构建工具进行构建。请注意,尽管反编译器并不完美,因此生成的 Java 文件甚至可能无法编译。

如果你对 APK 修改很认真,我强烈建议你看一下smali,它是代码更直接的表示,可以直接编译成 dex 格式。

于 2016-01-18T11:07:51.460 回答
0

从dex2jar和jd-gui获取的java源码仅供参考,一直不完整和/或不正确。此外,如果它是完全可靠的,那么就没有真正需要开源。

正如@Robert Williams 所说,如果您认真对待 apk 修改,您应该研究 smali。如果您这样做,这里有一些链接可以帮助您入门

http://smali.net16.net/

http://androidcracking.blogspot.in/search/label/smali

于 2016-01-18T11:51:45.617 回答