
正文
java代码反编译不准确的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
反编译出来的java文件有错误,请问怎么改?
没办法完全反编译所以的class文件为java文件的,因为java中编译具有不可逆性。但是可以将每个文件反编译,之后直接放到相应的包路径下来进行重新编码。
可以将看不懂的.class文件转换成看得懂的.java文件,这样一来就能很方便的读懂别人编写的java代码。
可以在数据盘(如D: E:等等)上建立相应的文件夹。比如,java源代码可以保存在d:\JavaSpace\文件夹下,电子书保存在:D:\EBook\文件夹下,图片保存在:E:\Pictures\文件夹下,诸如此类,等等等等。
例如:括号不匹配,变量未声明等。产生这类错误时,编译程序会出现报错提示,我们根据提示对源程序进行修改即可。这类错误是出现最多的。(3)警告:是指被编译程序怀疑有错,但是不确定,有时可强行通过。
比如class文件中可以用java关键词作名字的变量,反汇编出来的当然就不行了,这只是混淆技术之一,有些混淆技术相当难破。另外,反汇编出来的程序质量跟反汇编程序也很有关系,jd-gui不错,但也不是通吃的。
将反编译的java文件放入工程中,并将所需要的地方修改。到对应的工程目录中的bin目录也,找到新编译的class文件。用rar工具将新编译的class替换jar文件中的class文件。如果你需要更改的文件比较多,还是找一下源码工程。
相关问答
Q1: Java反编译后得到的不是Java源代码。
如果是简单的JAVA代码或者没有经过混淆编译的代码就会使一样或者差不多的。但是一下两种情况就特别不一样:经过混淆编译的 使用内部类的 另外,所有的注释都是没有的。
.class文件是java编译后的文件,它不是源代码,真正的java源代码是.java文件。java源代码是txt格式的.java文件,用记事本就可以打开。
这样做是行不通的。反编译一般是不能完全得到源Java代码的,得到的代码甚至会有语法错误,除非是简单的那些代码。要改的话就得改.class文件,但这个非常困难,要在16进制下改。
呵呵,我回答你吧。反编译的代码是什么要看你用的是什么语言写的源程序了。
因为反编译失败了,所以只有smali文件夹了。反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
会丢失或改变!区别只有对照和源JAVA对照了才知道,有源JAVA就不要反编译了。
Q2: 为什么将class反编译为java后,java直接编译时有错误
1、能够编译并运行,说明肯定生成了class文件。
2、一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。本文从研究的角度,浅析如何读懂这种反编译过来的文件。
3、我偶尔用过这个工具 你单独反编译一个文件是不行的,因为这个文件里的类类可能继承自其它类,或者它引用了其它包的类。在编译时就会出错,故无法变成class文件。你可以尝试把整个jar进行反编译,然后尝试对其进行编译。
4、一般是:java + class文件名;例如:A.java 编译后生成A.class文件。则命令为:java A 如果这样都不行,可能是你所运行的class文件不在你现在所访问的路径下。
5、一般反编译出来的goto有以下几种情况:while或do while循环 exception处理 switch case java-class的过程中,编译器会进行优化,将其处理为goto :label的形式。
6、java 命令的格式为 java 主类,或者 java 源文件。你运行 java xxx.class, xxx.class 即不是主类名,也不是源文件名,所以不行,而 java xxx.java 是可以的。
Q3: 用JAVA反编译器编译出来的语言一定是原来的正确源代码吗?
1、如果是简单的JAVA代码或者没有经过混淆编译的代码就会使一样或者差不多的。但是一下两种情况就特别不一样:经过混淆编译的 使用内部类的 另外,所有的注释都是没有的。
2、反编译得出的代码,是JAVA文件在生成CLASS文件时,做过优化的代码。所以跟你的原文件不一样(比如:注释全没有,中文全变成Unicode码,字符串连接全部用StringBuffer类来代替,自动增加else语句等等)。
3、Android APK中的Java代码可以被反编译到什么程度主要看APK的加密程度。第一种情况:无混淆无加密无加壳。直接利用Dex2jar和JD-GUI可把源码从APK里抠出来,代码逻辑清晰,基本上做到可复用,只是资源文件的引用需要计算一下。
4、Java代码的编译与反编译 2017-02-21Hollis数盟 什么是编译 利用编译程序从源语言编写的源程序产生目标程序的过程。用编译程序产生目标程序的动作。
Q4: java中.class文件反编译过来的程序,如何让他100%正确还原?
cmd 里输入: javac 文件名.java cmd 的路径要和 java文件一致,要不会找不到java文件。cmd里输入:java 文件名 是运行编译后的java文件,也就是运行文件名.class文件。
第一步:通过附件的“jd-gui”打开jar文件;第二步:将每个class文件的内容,粘贴到一个新建的java工程中(包路径必须相同);第三步:修改需要修改的类,之后如果运行没问题的话,直接导出为jar包即可。
你重新建一个工程啊,把你反编译的源码放进去,然后再编译打包就可以了啊。如果你没有eclipse 的话,那你就用命令编译打包。
java代码反编译不准确的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java代码反编译不准确的信息别忘了在本站进行查找喔。







