前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

关于扰乱器与反编译 (转载)-java基础_中国自学编程网 文章搜索: 名称 全文 文章 首页 IT资讯 开发语言 软件开发 WEB开发 考试认证 数据库 程序人生 编程学院 电子书籍 热点专题 编程论坛 计算机论文 C语言编程 - C++编程 - C#编程 - .NET编程 - JAVA编程 - VB编程 - DELPHI编程 - 汇编语言 - 数据结构 - ASP - PHP编程 - XML编程 - JSP 您现在的位置:首页--开发语言--JAVA编程--JAVA基础--浏览文章 关于扰乱器与反编译 (转载)-java基础 点击: 发布日期:2007-4-19 15:21:00 进入论坛 于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 中能打开 *.classhttp://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\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 switchcase 1: goto 21case 2: goto 29case 3: goto 37case 4: goto 45case 5: goto 10default: goto 54 }}你想破译其中的思路可就难了 :)以上资料摘自:http://www.zelix.com/klassmaster/ >> 相关新闻 开发推荐 程序人生 数据库推荐 编程语言推荐 关于站点 - 联系我们 - 友情链接 - 版权隐私 - 免责声明 - BUG提交 - 网站导航 - 编程论坛 - 返回顶部 欢迎您在论坛发布各类原创作品和讨论话题,您的支持是自学编程网前进的基石 copyright © 2005-2007 www.zzzj.com online services. all rights reserved. 2012