
正文
反编译的java代码报错 java反编译后源码有错误
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
为什么反编译class出来的java再转化为class会出现字符报错?
1、并不是所有的class都能反汇编成java文件的,尤其是那些经过obfuscation(代码混淆)的class文件,混淆器故意生成很难或者根本不可能被反汇编的程序。
2、一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。本文从研究的角度,浅析如何读懂这种反编译过来的文件。
3、我偶尔用过这个工具 你单独反编译一个文件是不行的,因为这个文件里的类类可能继承自其它类,或者它引用了其它包的类。在编译时就会出错,故无法变成class文件。你可以尝试把整个jar进行反编译,然后尝试对其进行编译。
4、能够编译并运行,说明肯定生成了class文件。
相关问答
Q1: 从java程序里反编译出来,一字未改再重新编译提示100多个错误?
反编译的程序,不能保证100%的正确的,所以你再编译,很明显问题出来了。有些地方应该还要手动修改一下。
并不是所有的class都能反汇编成java文件的,尤其是那些经过obfuscation(代码混淆)的class文件,混淆器故意生成很难或者根本不可能被反汇编的程序。
反编译出来的东西,有时候就是这样的。建议你换个反编译软件试试。
class文件时,里面的注释会全部删除,定义的常量,会以最张代表的那个具体的值代替,有时for循环,甚至会变个样子,所以,反编译过来,这些地方都不会变成最先.java文件里面的样子。所以,再重新编译肯定是行不通的。
一般反编译出来的goto有以下几种情况:while或do while循环 exception处理 switch case java-class的过程中,编译器会进行优化,将其处理为goto :label的形式。
Q2: 反编译出来的java文件有错误,请问怎么改?
首先请确认没有错敲成java xxx.class,其次,检查CLASSPATH环境变量,将java文件按包名存放:比如工作目录是/work,类是packageclass1,那么将它存放为/work/package1/classjava。
你重新建一个工程啊,把你反编译的源码放进去,然后再编译打包就可以了啊。如果你没有eclipse 的话,那你就用命令编译打包。
比如class文件中可以用java关键词作名字的变量,反汇编出来的当然就不行了,这只是混淆技术之一,有些混淆技术相当难破。另外,反汇编出来的程序质量跟反汇编程序也很有关系,jd-gui不错,但也不是通吃的。
不是每个反编译都能完美的,用eclipse规范下代码,然后不符合的语法的方法,自己换成适合当前jdk版本支持的就可以了,反编译还是得花力气在代码的上,偷懒有限啊。
但是可以将每个文件反编译,之后直接放到相应的包路径下来进行重新编码。
class文件时,里面的注释会全部删除,定义的常量,会以最张代表的那个具体的值代替,有时for循环,甚至会变个样子,所以,反编译过来,这些地方都不会变成最先.java文件里面的样子。所以,再重新编译肯定是行不通的。
Q3: 反编译时执行javajarbaksmalijarxxxxodex时报错如图如何处理
1、java中jar包轻易的被反编译是由于java的特性决定的。
2、要先把core.apk和core.odex合并之后再进行反编译,不然就会提示这个。
3、首先去官方网站点击下载可用的最新ApkTool。在上一步的弹出窗口中点击截图红圈处的位置进行下载,由于是国外服务器点击后可能出现没反应情况,稍作等待即可。
Q4: 我使用CLASS反汇编生成的JAVA文件重新进行编译生成JAVA文件提示出错是...
1、并不是所有的class都能反汇编成java文件的,尤其是那些经过obfuscation(代码混淆)的class文件,混淆器故意生成很难或者根本不可能被反汇编的程序。
2、能够编译并运行,说明肯定生成了class文件。
3、一般是:java + class文件名;例如:A.java 编译后生成A.class文件。则命令为:java A 如果这样都不行,可能是你所运行的class文件不在你现在所访问的路径下。
4、Java源码文件这些文件可以是任意字符编码的,在Java的Class文件里存储的字符串是UTF-8编码的,所以如果在代码中有中文字符的话,就会导致乱码。当然,这只是众多原因中的一种,所以把编码设置统一是避免出现乱码的解决办法。
5、c:/java/jad exampleclass c:/java/jad *.class 结果是将exampleclass反编译为examplejad。将examplejad改为examplejava即得源 文件。
反编译的java代码报错的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java反编译后源码有错误、反编译的java代码报错的信息别忘了在本站进行查找喔。







