1

不幸的是,我删除了我的 Android 源代码。尝试使用 dex2jar 和 baksmali 获取 jar,并使用 jd-gui 使用我的 .apk 文件获取 java 源文件。是的,我得到了文件,但我遇到的问题是,在 java 文件中的更多地方,代码是字节格式的。需要把它变成可读的格式才能让自己前进。

4

2 回答 2

2

反编译并不是一门完美的科学,而且您很少能取回您输入的确切 Java 代码。

当您编译代码时,会对其进行大量优化,如果您的目标是获取原始代码,这会使反编译变得更加困难。

充其量,你会得到很多很好的反编译代码,以及一些字节码。您应该能够根据在程序中的位置确定用什么 Java 代码替换该字节码​​,就像您编写原始代码一样。

对于大多数简单的应用程序,从头开始重写比反编译并尝试修复反编译的代码更容易。

tl; dr:不要忘记备份您的代码。曾经。

于 2013-04-13T03:44:33.027 回答
0

一般来说,如果你的目标是恢复可读的源代码,那么像 JD-Gui 这样的东西是你最好的选择。但是对于失败的情况,您可以尝试Krakatau,这是我编写的一个反编译器。

Krakatau 旨在能够反编译类文件,即使它们被混淆或不是从 Java 编译的。但是,结果的可读性不如 JD-Gui 之类的,因为它没有利用 Java 编译器留下的模式。它并不完美,但我认为绝对值得一试。

PS Krakatau 仅支持 JVM 字节码。您需要一种方法将其从 Android 转换回 Java 字节码,然后才能对其进行反编译。

于 2013-04-13T04:05:35.367 回答