不幸的是我删除了我的Android源代码。尝试使用dex2jar和baksmali获取jar并使用jd-gui使用我的.apk文件获取java源文件。是的我得到了文件,但我遇到的问题是,在java文件的更多地方,代码是字节格式。需要将其变为可读格式才能让自己前进。
答案 0 :(得分:2)
反编译不是一门完美的科学,你很少会找回你输入的确切Java代码。
编译代码时,会对其进行一系列优化,如果您的目标是获取原始代码,这会使反编译变得更加困难。
充其量,您将获得大量经过良好反编译的代码以及一些字节代码。您应该能够根据程序中的位置找出替代该字节代码的Java代码,并在编写原始代码时看到。
对于大多数简单的应用程序,从头开始重写比反编译并尝试修复反编译代码更容易。
tl;博士:别忘了备份你的代码。如初。
答案 1 :(得分:0)
一般来说,如果你的目标是获得可读的源代码,那么像JD-Gui这样的东西是你最好的选择。但是对于失败的情况,你可以尝试Krakatau,我写过的反编译器。
Krakatau旨在能够反编译类文件,即使它们被混淆或未从Java编译。但是,结果不像JD-Gui那样可读,因为它没有利用Java编译器留下的模式。它并不完美,但我认为这绝对值得一试。
P.S。 Krakatau仅支持JVM字节码。你需要一种方法将它从Android转换回Java字节码,然后才能反编译。