如何反编译项目外的class
A. 混淆的class文件怎么进行反编译
一般情况下java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。
从研究的角度,浅析如何读懂这种反编译过来的文件。
例子一:赋值
反编译过来的代码如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始语句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
JVM INSTR swap ; //赋值语句
练习:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不带参数创建对象
反编译过来的代码如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始语句:
CrossTable crosstable = new CrossTable();
注解:
练习:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:带参数创建对象
反编译过来的代码如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始语句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
此语句实际上是:s2 += s.substring(j, i) + s6;
练习:
例子四:for循环
反编译过来的代码如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始语句:
for(int k=0;k < as.length;k++)
{
...
}
注解:
例子五:while循环
反编译过来的代码如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始语句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
B. 怎么将java类反编译成class文件
打开下载好的DJ_java_discompiler选择file,之后点击open。之后出现以下界面。这里我选择一个test.class文件。点击打开之后,出现以下反编译test.java后的界面。这个是test.java的文件。可以看出反编译后的结果是正确的。如果以后想看.class文件的源码,可以用这种方式查看。
C. 怎么反编译java的class文件
工具:
DJ java discompiler.
方法:
打开DJ_java_discompiler,点左上角的file,选择open。
D. 如何将java中的.class文件反编译
安装Java jdk后 看安装目录里有没有jad.exe,没有悄毕要下载,一般都有的 配置Java环境变量 开始-运行-cmd-回车-进入命令行窗口: cd+空格+class文件所在路径: 按下面启乎芹的命令进行顷橡反编译: 例如:[2] jad -sjava example.class 回车 在目录里可以看到
E. java反编译器怎么用
目前最好的反编译工具,是小颖JAVA源代码反编译超级引挚,Google一下就有下的,很好用
F. 如何在MyEclipse中反编译class文件
1.下载MyEclipse反编译Class文件的工具
2.工具的安装
下载后上面的工具之后,解压出来,我们可以看到有两个文件:jad.exe、net.sf.jadclipse_3.3.0.jar 。
第一步:我们将jad.exe文件放到JDK的bin目录下,具体的可以查看下面的图片:
第二步:将 net.sf.jadclipse_3.3.0.jar 拷贝到 MyEclipse安装目录下的plugins目录下面(接下来的步骤我会以我的计算机路径为例子说明)路径在:D:\Users\Administrator\AppData\Local\Genuitec\Common\plugins.具体文件位置见下图:
第三步:在D:\Users\Administrator\AppData\Local\Genuitec\MyEclipse-8.6\dropins创建一个eclipse文件夹.
第四步:在创建好的eclipse文件夹下,分别创建featues、plugins两个文件夹.
第六步:将net.sf.jadclipse_3.3.0.jar 文件分别拷贝到创建好的featues、plugins两个文件夹里面.
第七步:重新启动MyEclipse,在Windows——>Perference——>Java下面应该会多出一个JadClipse目录. 如果没有出现的话,多试几次就OK了,我当时也是这样.
第八步:点击JadClipse,在右边的窗口中配置JadClipse. 设置path to decompiler为jad.exe的全路径,如:C:\jdk\bin\jad.exe,在Directory for temporary files中指定l临时文件路径,如 :D:\Users\Administrator\AppData\Local\Genuitec\MyEclipse-8.6\result ,其中result是新建一个文件夹. 同时需要选中 User Eclipse code formatter ,这样编译出来的Java 代码会和Class文件的格式一样.
为了避免编译后的中文乱码问题,我们需要配置Misc,选中如下单选框.
第九步:安装完成之后,双击Class文件,MyEclipse就自动反编译了.如果没有出现想要的结果,需要检查一下“*.class”默认关联的编辑器为“JadClipse Class File Viewer“ ,具体的操作还是看图吧:
关联之后,就可以自动的反编译啦!
G. 反编译jar里所有class文件,用什么工具
用“jd-gui.exe”。
第一步:下载附件的工具“jd-gui.zip";
第二步:解压后运行“jd-gui.exe”;
第三步:选择文件,之后找到“jar”文件、“class”文件,打开即可。
H. 怎样反编译class文件,再编译
一、反编译:下载一个jad 反编译工具jad简单用法 以下假设jad.exe在c:/java目录下 一、基本用法 Usage: jad [option(s)] 直接输入类文件名,且支持通配符,如下所示。 c:/java/>jad example1.class c:/java/>jad *.class 结果是将example1