有什么工具可以看见Jave源代码???(100分)

  • 主题发起人 主题发起人 php1
  • 开始时间 开始时间
P

php1

Unregistered / Unconfirmed
GUEST, unregistred user!
前几天看见某个网页上有一个Java游戏做得不错,我想知道他的源代码,可以吗???
 
java程序是编译过的,你可以用Java的反编译工具试一试。
 
如果你在浏览器的cache中找到该Applet的class文件的话,
可以用jad之类的工具反编译一下。只不过class文件一般都是找不到的。
 
极端做法:用webzip下载整个网站,然后在其中找你要的class文件,再反编译一下。
try it,:-)
 
在這個站點 http://helj2000.3322.net/ 說可以查看,你去download試試吧.
 
试了一下,真牛!!!
 
用JDK的JAVAP反编译工具就行,不过也要象前面几位说的要先搞到CLASS文件。
 
那么容易被你看到的话,JSP拿来做什么?
 
class的文件有就比较好高d
 
php1:请继续讨论或结束问题
 
我关税
[HKEY_CLASSES_ROOT/.java]
@="JBuilder.Java"
[HKEY_CLASSES_ROOT/JBuilder.Class/Shell/Decompile/command]
@="jad -s .java /"%1/""
 
要搞到.class文件只要搞到url(ViewSource会不会呀),然后下就行了
 
大家继续讨论吧!!!
 
php1:你也不能只听不说呀,既然是替你回答,
你也应该有点反馈,谈谈你的看法嘛。
 
用 Java 编程的人, 如果不想公开源程序, 就得与反编译器作斗争,
必须使用反编译器,先看看别人将会如何看你的程序,再看看Obfuscators(扰乱器)的效果.
JAD 是 Windows 下效果极佳的反编译器 http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
围绕这个引擎, 有很多图形界面, 例如 Frontend.
(我常用)
JODE 是免费的 Java 反编译器和优化器.
http://jode.sourceforge.net/
Intr@byte 是个 JBuilder 的外挂工具 (OpenTool), 使得您在 JB 中能打开 *.class
http://www.webappcabaret.com/bjb/index.jsp
它也使用 JAD 引擎, 并限制为只反编译器类的定义部分.
有些网站可以帮您反编译, 您给个 URL, 它分析出其中有多少个 applet,
然后, 再反编译掉. http://www.jreveal.org/
最后, 您想了解反编译原理, 想自己编个反编译器和扰乱器, 这里有本免费得书 .
http://www.riis.com/depile.html
其他到 yahoo 里找吧, 太多了.
 
太谢谢yysun了,我想要知道扰乱器的原理,不知道能不能说说。
你给的网址我到连不上(我在教育网内)。
VisiBroker 4.0 for java好像是为了隐蔽用自己的ClassLoader读vbjorb.jar文件(用
其他Zip的解压工具解不出ORB.class),但是效果不佳,只要用JBuilder的Deployment
Wizard就可以把它弄出来。
BTW:没有必要用图形界面的反编译工具,用我的方法,方便快捷。我经常一个早上就要
反编译十几个类。
来自:JJams_King 时间:00-10-16 0:21:28 ID:366883
我关税
[HKEY_CLASSES_ROOT/.java]
@="JBuilder.Java"
[HKEY_CLASSES_ROOT/JBuilder.Class/Shell/Decompile/command]
@="jad -s .java /"%1/""
 
如果需要反编译工具,我给你一个.
 
JJams_King: 扰乱器就是把 bytecode 中的类名,方法名,变量名等变成无意义的符号。
例如,以下源程序:
package temp;
public class HelloWorld {
String helloWorld = "Hello World";
String byeWorld = "Bye World";
public static void main(String[] args) {
new HelloWorld(true);
new HelloWorld(false);
}
HelloWorld(boolean isHappy) {
if (isHappy) {
System.out.println(helloWorld);
}
else
{
System.out.println(byeWorld);
}
}
}
加扰后,再反编译出来是:
package a;
import java.io.PrintStream;
public class a
{
String a;
String b;
a(boolean flag)
{
a = "Hello World";
b = "Bye World";
if (flag)
System.out.println(a);
else
System.out.println(b);
}
public static void main(String astring[])
{
new a(true);
new a(false);
}
}
而更高级的扰乱器,还能加密字符常量和扰乱程序流。加扰后,再反编译后变成这样:
package a;
import java.io.PrintStream;
public class a
{
String a;
String b;
public static boolean c;
a(boolean flag)
{
a = a("q/0041/033//03162/005,]");
b = a("{/0308W/027V/0231/023");
if (!flag) goto 42 else
26;
System.out.println(a);
if (!c) goto 52 else
42;
System.out.println(b);
}
public static void main(String astring[])
{
new a(1);
new a(0);
}
private static String a(String string)
{
char ach[];
int i;
int j;
int k;
ach = string.toCharArray();
i = ach.length;
j = 0;
k = 0;
expression 57
expression ach
expression j
expression 97
expression ach
expression j
expression 93
expression ach
expression j
expression 119
expression ach
expression j
expression 64
expression ach
expression j
dup 2 over 1
push []
^
pop []
j++;
k++;
if (i == j)
return new String(ach);
expression k
switch
case 1: goto 21
case 2: goto 29
case 3: goto 37
case 4: goto 45
case 5: goto 10
default: goto 54
}
}
你想破译其中的思路可就难了 :)
以上资料摘自:http://www.zelix.com/klassmaster/
 
后退
顶部