关于扰乱器与反编译

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

作者:icelight

以下摘录于Delphibbs中Dr.yysun 的回答,希望对你有帮助

用 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 里找吧, 太多了.

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航