Java反编译后得到的不是Java源代码。

使用JD-GUI对.class文件进行反编译后,得到的大部分都是java源代码。但有一些核心的重要的方法,如解密方法,却不是可以看懂的源。有点像.class,又有点像汇编语言,里面有pop,push等关键字,想知道这是什么代码,如何写到.class文件中去的呢?又如何反编译为可识别的java 代码?

估计你得到的是java虚拟机指令,因为.class文件与java源代码不是一一对应的,但与虚拟机指令却是一一对应的,就像exe文件中的机器指令与汇编指令是一一对应的,要看懂这些代码可以参考java虚拟机指令集追问

下面是一段示例,可以帮忙分析一下么?到底是怎么生成的?怎样还原成Java code
public String refresh(String s)
{
// Byte code:
// 0: aload_0
// 1: monitorenter
// 2: aload_0
// 3: getfield 54
// 6: ldc 101
// 8: aload_1
// 9: invokevirtual
.....
}

追答

肯定不是源码啊,这就是jvm指令
以上出现的助记符说明如下
aload_0 将第一个引用类型本地变量推送至栈顶
aload_1 将第二个引用类型本地变量推送至栈顶
monitorenter 获得对象的锁
getfield 获取指定类的实例域,并将其值压入栈顶
ldc 将int,float或String型常量值从常量池中推送至栈顶
invokevirtual 调用实例方法
至于怎么还原成源码我就不知道了,因为一个程序可能由多种源码编译得到,不存在一对一关系

温馨提示:内容为网友见解,仅供参考
无其他回答

Java反编译后得到的不是Java源代码。
估计你得到的是java虚拟机指令,因为.class文件与java源代码不是一一对应的,但与虚拟机指令却是一一对应的,就像exe文件中的机器指令与汇编指令是一一对应的,要看懂这些代码可以参考java虚拟机指令集

什么是java源代码 怎么查看
你说的java源代码是指编译成的class文件前的java文件。当我们运行.java文件时,它会被系统编译成.class文件,例如Test.java编译之后就是Test.class,源文件就是指Test.java文件,一般部署项目时,有.class文件就可以发布运行了,但是如果想修改这个系统,.class是不能修改的,要有.java文件才能修改 也可...

如何将java中的.class文件反编译
1. 获取反编译工具,如JD-GUI、Jad等。2. 打开反编译工具,选择需要反编译的.class文件。3. 工具会自动将.class文件转换为可读的Java源代码。4. 保存反编译后的Java源代码。以下是 一、选择合适的反编译工具 反编译.class文件需要借助专门的反编译工具,如JD-GUI、Jad等。这些工具能够将.class文件...

如何实现APK的反编译得到APK的源码
一、反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者dex2jar是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:dex2jar:http:\/\/laichao.googlecode.com\/files\/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:http:\/\/lai...

如何将编译过的.class文件转变为未编译的.java文件?
现在有许多反编译Java class文件的软件,但是大多数都采用内置的查看器来查看反编译后的源代码,无法显示代码的关键字。这个反编译Java class文件的小工具,能使用自己喜欢的文本编辑器查看反编译后的代码,并可以高亮显示关键字内容。安装后在资源管理器中直接双击.class文件就可以反编译程序 下载地址:http...

如何反编译Apk得到Java源代码
apk文件也是一种常见的zip,常用的压缩软件就可轻松地解压apk文件。用压缩软件将apk文件中的文件解压到一个文件夹中,得到APK中的资源包括XML文件和classes.dex文件,classes.dex就是java文件编译再通过dx工具打包而成的。解压截图:3.反编译dex文件 解压apk文件后,你会发现res目录的图片没有加密,但java...

如何将java中的.class文件反编译
在目录里可以看到example.java源文件 [1] 反编译一个class文件:jad example.class,会生成example.jad,用文本编辑器打开就是java源代码 [2] 指定生成源代码的后缀名:jad -sjava example.class,生成example.java [3] 改变生成的源代码的名称,可以先使用-p将反编译后的源代码输出到控制台窗口,...

JAVA应用怎么破解?
1. cavaj Java Decompile 1.11 2.Java源代码反编译专家(该软件支持目录编译)3.JAD 这三个软件各有优缺点:前二个软件是GUI界面,使用起来很方便。尤其是"Java源代码反编译专家",支持 目录编译,用起来很得心应手;第三个软件JAD功能最强,由于是字符界面,但是相对初学者比较难一点。二.破解步骤 1...

如何将.class文件转换成.java文件
不过,JAVA最突出的跨平台优势使得它不能被编译成本地代码,而要以中间代码的形式运行在虚拟机环境中,这使得JAVA的反编译要比别的高级语言容易实现,并且反编译的代码经过优化后几乎可以与源代码相媲美。为了更好地保护知识产权,避免本公司的智力成果轻易被人窃取,开发者有必要对反编译工具深入了解,以便...

怎么在myeclipse里查看jar包的源代码
jdec是一个Java反编译器。它能够把出现在一个.class文件中的字节码还原成Java源代码,反编译的结果几乎与原始Java文件相同。它还自带一个利用swing开发的用户操作界面。官方网站:http:\/\/jdec.sourceforge.net\/ 5、uuDeJava uuDeJava是Java Class文件的反编译工具。反编译的Java源程序被输出到Class的相同...

相似回答