我在应用程序的dex文件上使用了dex2jar和JD-gui,尽管在代码的某些部分,它没有意义,并且在反编译方面存在错误.
尽管当我在dex文件上使用backsmali时,代码是正确的,但我更愿意阅读Java代码而不是Smali来理解大型应用程序的工作原理.
首先,为什么Java代码中会有如此多的不一致之处? dex2jar或JD-gui是否有问题?还有其他选择吗?
解决方法:
即使从.class文件到.java文件,反编译通常也不会那么完美.
一方面是由于一个简单的事实,即编译并不代表.class文件中源文件中的所有信息.空白和注释是.class文件中未表示的最明显的信息示例.局部变量名称也经常被忽略,根据您的编译标志,甚至参数名称也可能丢失.
另一方面,反编译器的市场似乎非常有限,缺乏竞争会导致反编译器无法正常运行.例如,Java编译器的每个新发行版都可能产生新代码,需要对反编译器进行等效更新才能检测到新模式并从中产生合适的Java源代码.缺少这样的更新,反编译器必然会失败并打印字节码反汇编,或者生成看起来很奇怪的构造,它们执行相同的操作,但永远不会被人类编写.
并且当您添加另一级别的编译(Java字节代码-> Dalvik字节代码)时,它只会变得更糟.
除非您能给出哪种不一致的具体示例,否则很难给出更好的答案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。