❶ 混淆的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);
}
❷ 如何将java中的.class文件反编译
安装Java jdk后
看安装目录里有没有jad.exe,没有要下载,一般都有的
配置Java环境变量
开始-运行-cmd-回车-进入命令行窗口:
cd+空格+class文件所在路径:
按下面的命令进行反编译:
例如:[2] jad -sjava example.class 回车
在目录里可以看到example.java源文件
[1] 反编译一个class文件:jad example.class,会生成example.jad,用文本编辑器打开就是java源代码
[2] 指定生成源代码的后缀名:jad -sjava example.class,生成example.java
[3] 改变生成的源代码的名称,可以先使用-p将反编译后的源代码唯姿输出到控制台窗口,然后使用重定向,输出到文件:jad -p example.class > myexample.java
[4] 把源代码文件输出到指定的目录:jad -dnewdir -sjava example.class,在newdir目录下生成example.java
[5] 把packages目录下的class文件全部反编译:jad -sjava packages/*.class
[6] 把packages目录以及子目录下的文件全部反编译:jad -sjava packages/**/*.class,不过你仍然会发现所有的源代码文件被放到了同一个文件中,没有按照class文件的包路径建肆唯立起路径
[7] 把packages目录以及子目录下的文件全部反裂山培编译并建立和java包一致的文件夹路径,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 当重复使用命令反编译时,Jad会提示“whether you want to overwrite it or not”,使用-o可以强制覆盖旧文件
[9] 还有其他的参数可以设置生成的源代码的格式,可以输入jad命令查看帮助,这里有个人做了简单的翻译:jad命令总结
[10] 当然,你会发现有些源文件头部有些注释信息,不用找了,jad没有参数可以去掉它,用别的办法吧。
❸ 怎么把class文件反编译成java文件
安装Java jdk后
看安装腊脊和目录里有没有jad.exe,没有要下载,一野雹般都有的
配置Java环境变量
开始-运行-cmd-回车-进入命令行窗口:
cd+空格+class文件所在路径:
按下面的命令进行反编译:
例如:[2] jad -sjava example.class 回车
在目录里可以看到example.java源轮盯文件
❹ 如何将java中的.class文件反编译
选择一款反编译工具即可
1、JD-GUI
JD-GUI 是显示java 源代码 *.class文件的 图形界面工具。可以在这里下载:JD-GUI-DownLoad
下载下来后,打开该工具,直接将jar包 拖拽到 显示窗口即可查看源代码。
2、JD-Eclipse
(1)下载 JD-Eclipse 插件。下载后,打开Eclipse,选择:Help-->Install New Software...-->add --archive... 按步骤操作即可:
安装后,重启Eclipse,应该可以查看 *.class文件的代码。
ADD and Archive...
3、JD-IntelliJ
JD-Intellij 是 IntelliJ IDEA 的插件,安装了这个插件,可以方便查看 jar包源码。下载JD-Intellij
以Android studio为例: 可以离线安装也可以在线安装。
❺ 怎么把class文件反编译成java文件
Java中使用eclipse提供的插件对class进行反编译成java文件,如下步骤:
1、安装jadclipse插件
使用jadclipse插件一定要注意Eclipse版本。jadclipse_3.2.4,它对应的是Eclipse3.2版,jadclipse_3.3.0可以用于Eclipse3.3M6以上版。大家千万不要把jadclipse_3.3.0放到Eclipse3.2中,也不要把jadclipse_3.2.4放到Eclipse3.3中,将jadclipse插件(版本自己选择)直接到Eclipse目录中的plugins文件夹下,然后打开Eclipse,选择"窗口"-"首选项"-"常规"-"编辑器"-"文件关联",点击文件关联中的*.class,下面就会看到"JadClipse Class File Viewer",选中它,点击缺省值,点击OK,将它设置为默认的类查看器。如图:
❻ 怎样使用javap来反编译class文件
当然可以了。在java软件包的bin文件夹下有一个javap程序,就是用来反编译的。 用法如java一样。就是先用javac变成字节码文件就是.class文件后,用javap 加上文件名就可以反编译了。 举个例子test.class,反编译用javap test就行了。
❼ 如何将java中的.class文件反编译
一、反编译:下载一个jad
反编译哗卜工具jad简单用法
以下假设jad.exe在c:/java目录下
一、基本用法
Usage: jad [option(s)]
直接输入类文件名,且支持通配符,如下所示。
c:/java/>jad example1.class
c:/java/>jad *.class
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源
文件。
二、Option -o
不提示,覆盖源文件
三、Option -s
c:/java/>jad -sjava example1.class
反编译结果以.java为扩展名。
四、Option -p
将反编译结果输出到屏幕
c:/java/>jad -p example1.class
将反编译结果重定向到文件
c:/java/>jad -p example1.class>example1.java
五、Option -d
指定反编译的输出文件目录
c:/java/>jad -o -dtest -sjava *.class
二:修改、再编译
用Eclipse新建工程,再将反编译出的Java文件按原样导入工程,就可以修改代码。修改并调试后胡者,点击Eclipse菜单中的文件→导出→Java→可运行的JAR文件裤芦薯,选择配置工程和导出路径,然后点完成即可导出。
❽ 如何将java中的.class文件反编译
打开下载好的DJ_java_discompiler
选择file,之后点击open。之后出现以下界面。这里选择一个test.class文件。
点击打开之后,出现以下反编译test.java后的界面。
这个是test.java的文件。可以看出反编译后的结果是正确的。
如果以后想看.class文件的源码,可以用这种方式查看。
❾ 如何将java中的.class文件反编译
安装Javajdk后看安装目录里有没有jad.exe,没有要下载,一般都有的配置Java环境变量开始-运行-cmd-回车-进入命令行窗口:cd+空格+class文件所在路径:按下面的命令进行反编译:例如:[2]jad-sjavaexample.class回车在目录里可以看到
❿ 有没有这样的软件: 用jd-gui可以反编译class文件,但是不能修改。有可以反编译并直接修改的么
jd-gui可以将看到的反编译结果保存到一个zip压缩包里面,操作好握方法如下:
1、橡消首先创建一个class文件,打开记事本。