最近公司要发布一个东东,在发布前想弄个混淆器混一混,弄来弄去没找到个合适的想上来听听各位高手的对混淆器使用的心得.
用过SUN的JADE,混的效果还不错,不过我写的是APPLET,JADE混过后类名方法名都变成0o0o0o0o00o的样子N长一个,一个100K的JAR包被混完后要有差不多200K了,不划算,排除它了.倒是用retroguard.jar挺合适的,混过后类名方法名一般都是a或b或C这样的一位数字,100K的包被混完后只有60K左右,太适合做APPLET了. 不过觉得混的效果一般般,混过后的代码还能看得出大概来,不太理想.网上很多讲JOC的文章,贴的混过后的效果也很牛的,可惜搜来搜去都找不到那个JOC.JAR到哪下载
我想找一个混完后类名变简单点,让我的包可以变小点,另外混的效果要好些.收费的都可以,不知哪位高手能推荐一二,谢谢!

解决方案 »

  1.   

    JADE是我用过比较满意的混淆器,你说的使文件太大的毛病是所有混淆器的通病,不容易解决
      

  2.   

    给你个 joc ,joc还布错http://www.jspx.net/down/joc.zip
      

  3.   

    试了下JOC,混出来的效果确实还不错,很混乱的.不过对JOC操作不太熟悉,有几个问题想请教下:
    不过用JOC时,不能设定具体的混淆规则,定义的public,private是对全部的定义.例如我想要主类的public都要保留不混,其它的都可以全部做private 的混.要实现这样的操作时我觉得很麻烦,可能我没找到合适的好方法了.另外,我想请教下用joc的朋友,如果要编译一个比较大的JAR包(没有编译之前还都是一个个目录和.java文件),用怎么样的方法比较省事?
      

  4.   

    1.建议用JOC,挺不错的。
    2.编译jar的比较好的方法是使用ant。
      

  5.   

    在我的应用中,是个APPLET来的,所以有些方法要提供给WEB页面中调用,这些方法不能混要保护起来,其它的就要都混淆掉了,不管是不是public的.现在我用retroguard混的时候就可以编写个哪些要混哪些要保护的脚本出来,可JOC这些实现不了这个,只能将整个包接同一要求来编译的混.请各位老兄再帮忙推荐推荐
      

  6.   

    我建议你不必把整个JAR包下的文件都混,因为加了混淆器,运行效率会降低了,而加我试过用joc把很多文件都混了,运行时就报了错。而且还找不出到底是哪个类错了,如果在某些if()中混淆出了错,这样会很隐蔽的,不易发现。把几个技术含量高的又或者类中有机密的单独提出来加就可以了。
      

  7.   

    我用的是retroguard.jar,感觉效果还不错。
      

  8.   

    我一直用的JADE,没什么效率问题,apple也无所谓,我推荐你别换来换去的,就这个就挺好的。
      

  9.   

    弄来弄去,发现现在只能用retroguard.jar了.
    我有应用中还有个要求,我的系统有两部分内容组成,一部分是APPLET,在网上发布的,一部分是一个Application的一个文件编辑系统.那个文件编辑系统编辑好的文件以对象序列化的形式保存为文件,然后那个APPLET部分就去读那些被保存的文件.现在发现别的混淆器,如JADE,每次混完类名,里面的方法名都不同,好象都是随机生成,这样就把我那些对象序列化的保存的文件弄的每次不同了,导致我在APPLET中读那些文件不正确了.我的两个部分是分开来混的,但两次混的效果不一样,这样那些文件对象的类都来是同样的类,但在这里被混后被命成不同的名了,没办法再读它出来了现在只发现retroguard来混的时候,不管混多少次,那些在两个部分中的文件中用到的对象序列化的类和里面的方法名都是被命成同一个名字,这样我同一个序列化的对象才能同时在APPLET和APPLICATION两个系统中用到了比较郁闷了
      

  10.   

    加个炸弹在你程序里,通常是一行错误的汇编语言,但不影响程序执行,用jad之类反编译软件会报错。。PS retroguard.jar 会把jar优化的更小一下,这点不错,但混淆效果一般啊.....