混淆代码 jocky与proguard

本文记录了作者使用Jocky和ProGuard进行Java代码混淆的过程,包括配置、运行及解决遇到的问题,如乱码、内存溢出等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上周被经理说了一顿,没有混淆代码交给客户了.然后这周集中精力搞这个混淆器.风波可真是过多颇折啊.
  先说说这个Jocky这个插件,下载了这个东东以后.就进行这个运行,自己可以产生一个jocky_build.xml文件.如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- WARNING: Jocky autogenerated file.
              Any modifications will be overwritten.
-->
<project basedir="." default="build" name="ems1.3.2.jocky">
    <property name="jocky.jar" value="D:/eclipse3.2/eclipse/plugins/org.apusic.jocky_1.0.3/jocky.jar"/>
    <property name="jocky.output.dir" value="D:/eclipse3.2/eclipse/workspace/ems1.3.2"/>
    <property name="jocky.scramble.level" value="package"/>
    <property name="target" value="1.5"/>
    <property name="ems1.3.2.location" value="D:/eclipse3.2/eclipse/workspace/ems1.3.2"/>
    <path id="project.classpath">
        <pathelement location="WEB-INF/classes"/>
        <pathelement location="${ems1.3.2.location}/lib/castor-0.9.6.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/dom4j-1.6.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/flexdock-0.5.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/grammatica-1.4.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hcycom_core.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/idl-mtnm.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/itext-1.3.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/iTextAsian.zip"/>
        <pathelement location="${ems1.3.2.location}/lib/jasperreports-1.2.8.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/javatelnet.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/jdom.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/jta.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/jxl.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/log4j-1.2.8.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/mibble-parser-2.8.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/mysql_uncomp.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/ojdbc14.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/oro204.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/resolver.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/serializer.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/servlet-api.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/SNMP4J.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/xercesImpl.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/xercesImpl-2.6.2.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/xercesSamples.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/xml-apis.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/activation.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/axis.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/axis-ant.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/jaxrpc.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/mail.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/saaj.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/wsdl4j-1.5.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-beanutils.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-collections-2.1.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-dbcp-1.2.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-discovery-0.2.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-lang-2.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-logging-1.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/commons-pool-1.2.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/graph/jcommon.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/graph/jfreechart.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/graph/jgraph.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/ant-antlr-1.6.5.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/antlr-2.7.6rc1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/asm.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/asm-attrs.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/cglib-2.1.3.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/hibernate3.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/hibernate/oscache-2.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/lookandfeel/nativeskin.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/lookandfeel/skinlf.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/mx4j/mx4j-3.0.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/mx4j/mx4j-remote-3.0.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/mx4j/mx4j-tools-3.0.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/spring/ehcache-1.1.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/spring/spring.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/spring/spring-aop.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/spring/spring-orm.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/swing/org-jdesktop-layout.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/swing/swing-layout-1.0.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/commons/jdom.jar"/>
        <pathelement location="${ems1.3.2.location}/lib/axis/jdom.jar"/>
        <pathelement location="D:/eclipse3.2/eclipse/plugins/org.junit_3.8.2.v200706111738/junit.jar"/>
    </path>
    <target name="init">
        <jocky jar="${jocky.jar}" level="${jocky.scramble.level}"/>
        <mkdir dir="${jocky.output.dir}"/>
        <mkdir dir="${jocky.output.dir}/WEB-INF/classes"/>
    </target>
    <target name="clean">
        <delete dir="${jocky.output.dir}/WEB-INF/classes"/>
        <delete dir="${jocky.output.dir}"/>
    </target>
    <target depends="init" name="build">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <jocky enable="true"/>
        <javac destdir="${jocky.output.dir}/WEB-INF/classes" target="${target}">
            <src path="src/client"/>
            <src path="src/common"/>
            <src path="src/daemon"/>
            <src path="src/nbi"/>
            <src path="src/service/src"/>
            <src path="test"/>
            <src path="tools/mib2xml/src"/>
            <src path="work/castor"/>
            <classpath refid="project.classpath"/>
        </javac>
    </target>
</project>

在运行这个过程中,因为要修改几个界面,把项目倒入netbean中进行了界面的调整,然后又倒入eclipse中,出现乱码,那就修改吧,终于修改好了以后.然后点击右键中jocky now.是出现混淆了,可是全部都是IIIIII.class .不知道什么东西,然后运行肯定找不到了.网上搜了,找不到原因.到此,也不知道为什么,如果有知道的 朋友,请告诉我.

现在这个搞不定,那就只能换个方式,网上搜了一个ProGuard这个东东,刚开始运行,老是搞个内存溢出,刚开始怀疑我的笔记本的问题,我换,换了个公司的电脑.还是内存溢出.算了,我忍了.后来网上搜了一下,cmd执行这两个语句就行,执行的时候多分配些内存给它:
  java -jar proguard.jar @configuration.pro
  java -Xms128m -Xmx192m -jar proguardgui.jar configuration.pro
 注意,要在ProGuard 目录的bin下运行这些命令

 启动之后有几个选项

点选Input/Output标签,选择要混淆的JAR包(注意是JAR包),输出JAR包,以及用到的所有类库。
点选Obfuscation标签,选中不需要混淆的类(要被反射的类绝对不能被混淆)
点选Process标签,Process按钮,等着看结果吧。
Proguard中还包括了代码优化和代码整理的功能,,有兴趣的就自己研究吧
只混淆方面的选项 .注意,反射的类不能混淆,这个由保留的.
这个才终于搞定这个混淆,一个字,累,自己摸索真是累人啊

      
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值