使用 yGuard 混淆 fat jarmaven 项目中的特定包

问题描述

我正在尝试为我的工具创建一个混淆的胖罐。在尝试了 proguard 之后,我发现 yguard 也是出于同样的目的。

以下是混淆步骤

  • 步骤 1:使用 maven shaded 插件创建 fat jar

  • 第 2 步:第 1 步中创建的 fat jar 将被 yguard 蚂蚁任务使用。

我只需要混淆自定义包,因为混淆像 batik 库这样的外部 jar 会产生错误。例如:

Caused by: java.io.IOException: An error ('No mapping found for: Field org/apache/batik/bridge/SVGpathelementBridge.ctx') occured during the remapping! See the log!)
    at com.yworks.yguard.obf.GuardDB.remapTo(GuardDB.java:547)
    at com.yworks.yguard.ObfuscatorTask.execute(ObfuscatorTask.java:1064)

根据 ygurd 文档,我修改了 ant 任务以仅包含自定义包。但这并没有发生,yguard 没有考虑这种配置。以下是当前的ant任务配置。

    <target name="yguard" depends="jar">
    <taskdef name="yguard" classname="com.yworks.yguard.yguardTask" classpath="${projectDir}/lib/yguard-${version}.jar" />
    <yguard>
        <inoutpair in="${jar}" out="${obfjar}" />

        <shrink logfile="${shrinklog}">
            <keep>
                <!-- main method -->
                <method name="void main(java.lang.String[])" class="${mainclass}" />
            </keep>
        </shrink>

        <rename mainclass="${mainclass}" logfile="${renamelog}">
            <property name="error-checking" value="pedantic" />
            <keep>
                <class>
                    <patternset>
                        <!-- Custom library - should be obfuscated -->
                        <include name="com.acme.**.*" />
                        <!-- Excluded library -->
                        <exclude name="org.apache.**.*" />
                        <exclude name="javx.**.*" />
                    </patternset>
                </class>
            </keep>
        </rename>
    </yguard>
</target>

非常感谢任何解决此问题的指针。提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)