Android 将dex2.jar转换为classes.dex文件

Android 将dex2.jar转换为classes.dex文件,android,reverse-engineering,dex,Android,Reverse Engineering,Dex,是否有可能在不编译的情况下将dex2.jar文件再次转换为classes.dex。在这里,我使用反向工程过程成功地将apk文件转换为普通java源代码。使用“dx”工具可以做到这一点 dx inputfile.jar --output classes.dex 为什么不想再次通过标准编译器运行它呢?如果您的目标是修改应用程序,请不要在java级别修改它。除了最琐碎的项目外,这一切都将失败!反编译器,如dex2jar、jeb和enjarify的保真度太低,无法信任它们不改变行为(读取:破坏代码)

是否有可能在不编译的情况下将dex2.jar文件再次转换为classes.dex。在这里,我使用反向工程过程成功地将apk文件转换为普通java源代码。

使用“dx”工具可以做到这一点

dx inputfile.jar --output classes.dex

为什么不想再次通过标准编译器运行它呢?

如果您的目标是修改应用程序,请不要在java级别修改它。除了最琐碎的项目外,这一切都将失败!反编译器,如
dex2jar
jeb
enjarify
的保真度太低,无法信任它们不改变行为(读取:破坏代码)

最好使用反编译器(如
dex2jar
)查看java并了解您想要更改的内容。然后,使用
baksmali
获取smali反汇编,并在smali级别进行更改。最后,使用
smali
工具将其编译回
dex
文件


虽然难度更大,但成功的可能性更大。网上有很多关于如何修改smali代码的指南。这将花费更多的时间,但这确实是唯一的方法。

因为如果我反编译源代码,会出现很多错误。我只想在反编译的代码中做一些更改。可能吗?我不确定你的意思。如果你的“反编译器”产生的东西不能在Android上编译和运行,那么这就是你的反编译器的问题。但是,我不确定这与将jar编译回dex有什么关系,因为在您的问题中并没有具体说明。现在我已经解压了.apk文件extract classes.dex,然后通过dex2jar.bat进行转换,现在修改了服务器代码。这里有一个大问题,我想将.jar或.class重新打包到classes.Dex,但没有办法。怎么做???我还是不知道你在说什么。您可以使用dx工具使用新代码创建一个新的.apk。如果您可以创建一个.jar,那么您可以使用dx创建一个新的apk。APK是简单的zip文件,所以理论上您所做的就是解压缩一个,对它的classes.dex执行任何操作,替换classes.dex,然后再次压缩它。(当然,它需要签名等等,但工具可以为您完成这项工作。)您还可以使用smali和baksmali汇编/反汇编程序对dex文件进行更改,而无需将其转换回jar文件。