服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

关于扰乱器与反编译


  作者: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

扫描关注微信公众号