十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
您好, 提问者:
成都创新互联于2013年成立,先为玄武等服务建站,玄武等地企业,进行企业商务咨询服务。为玄武企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
可以考虑使用JD-GUI工具进行反编译
但是汇编语言肯定还要自己写的,直接反编译不行的。
理论上说计算机运行的程序都可以被反汇编的。但java这类程序就不一样了~~~java程序运行在java虚拟机(jvm)里由java虚拟机和操作系统进行交互操作。java源文件在编译成*.class时,java源代码被编译成类似计算机汇编代码的java汇编代码(也就是 Java字节码),这时java虚拟机就像cpu一样可以“运行java汇编代码”所以java的类并不是计算机是机器指令而是由jvm解译成机器指令运行的。
流程:
Java词法分析
最开始的时候,高级语言编写的程序对编译器来说只是一连串的单个字符组成的字符串。为了让编译器识别这一连串的字符串,需要逐个字符的读取源程序,然后将其切分成有意义的单词,这些被切分后的单词在编译器眼里是以
标识,语义值对的形式存在。
为了从源程序字符串中依次找出单词,编译器需要具有扫描功能,通常这种扫描器可以用一组有限状态机来实现。为了说明有限状态机是怎么一回事,下面给出一个实例。
下图为一个识别数字的有限状态机,数字由整数部分和可选的小数部分组成。因此,根据这个有限状态机,250和3.14159都能被识别成一个有效的数字。
Java语法分析
完成了“词法分析”后,接下来就是激动人心的“语法分析”阶段。通过语法分析得到语法树。
Java翻译语法树
首先,寻找最小表达式,接下来,将最小表达式与其周边的表达式合并。最后,将所有的表达式有序的进行合并,得到最终的汇编语言描述。
至此,我们便将高级语言翻译成了汇编语言。