java源码编译汇编
题主的原问题:
用JD-GUI和JAD反编译了几个class文件,结果JAD说不能完全反编译,JD-GUI则给出了一大堆汇编代码。
其实这个一般不会把它叫做汇编啦。就只是Java字节码的对应的文本形式而已。当然如果非要把Java字节码指令集看作真实机器的指令集,那把这个文本叫做“汇编”倒也不是不行…跑题了。
这是什么情况???
情况就是题主正好用的俩反编译器对比较混乱的字节码都处理得不好,掉坑里了。
不过题主只贴了JD-GUI的情况。请问用JAD的时候题主具体遇到的是啥问题?
要怎么样才能变成java的代码???
换个反编译器(并非开玩笑
用下面提到的CFR和Procyon都可以。
B. java反编译成汇编语言
您好, 提问者:
可以考虑使用JD-GUI工具进行反编译
但是汇编语言肯定还要自己写的,直接反编译不行的。
C. 在java编程中,汇编器把源代码编译成字节码再被JDK执行是这样的顺序吗
是的。再被JRE(JavaRuntimeEnvironment)运行。
D. 如何将java语言转变为汇编语言
流程:
Java词法分析
最开始的时候,高级语言编写的程序对编译器来说只是一连串的单个字符组成的字符串。为了让编译器识别这一连串的字符串,需要逐个字符的读取源程序,然后将其切分成有意义的单词,这些被切分后的单词在编译器眼里是以<标识,语义值>对的形式存在。
为了从源程序字符串中依次找出单词,编译器需要具有扫描功能,通常这种扫描器可以用一组有限状态机来实现。为了说明有限状态机是怎么一回事,下面给出一个实例。
下图为一个识别数字的有限状态机,数字由整数部分和可选的小数部分组成。因此,根据这个有限状态机,250和3.14159都能被识别成一个有效的数字。
Java语法分析
完成了“词法分析”后,接下来就是激动人心的“语法分析”阶段。通过语法分析得到语法树。
Java翻译语法树
首先,寻找最小表达式,接下来,将最小表达式与其周边的表达式合并。最后,将所有的表达式有序的进行合并,得到最终的汇编语言描述。
至此,我们便将高级语言翻译成了汇编语言。
E. 为什么Java反编译后带有汇编代码
那个不是汇编。。。是反编译工具无法识别的字节码(bytecodes,java中间代码),因为无法识别,自然只能直接把字节码打出来给你看了。
你多试几种反编译工具,并不是所有的都会出的,也不是所有的都在同一个地方出。这个取决于反编译工具的作者对字节码的理解。
F. JAVA程序能被反汇编吗
呵呵 首先,java可以反编译,现在已经有反编译软件了,你已经用过了,就知道的确很强大。不过,java相对来说,还是安全的,现在似乎还有种反反编译,听说过,不了解。
这些我们可以通过一些算法去加密之类的,比如md5这样的。所以还是不用担心java的安全性。
然后,java是可以写病毒的。只是,java的使用需要对方先安装jvm之类的,所以说,如果对方没安装,那你病毒就没用了。所以现在很少人用java写病毒,就像linux里很少人会去浪费时间写病毒的。
G. 我使用CLASS反汇编生成的JAVA文件重新进行编译生成JAVA文件提示出错是为什么呢
并不是所有的class都能反汇编成java文件的,尤其是那些经过obfuscation(代码混淆)的class文件,混淆器故意生成很难或者根本不可能被反汇编的程序。比如class文件中可以用java关键词作名字的变量,反汇编出来的当然就不行了,这只是混淆技术之一,有些混淆技术相当难破。
另外,反汇编出来的程序质量跟反汇编程序也很有关系,jd-gui不错,但也不是通吃的。
H. c语言和java数据结构编译成汇编语言是编译成一样的汇编语言代码吗
java不是解析吗?没有汇编吧。
如果真要说有汇编,可能到机器层面,应该是等效的。但是不一定一样。就好像从一个地方到另一个地方有很多路,但是终点是一样的。