gpt4 book ai didi

java - 在 Eclipse 中使用 yGuard 混淆库

转载 作者:搜寻专家 更新时间:2023-10-31 20:23:01 24 4
gpt4 key购买 nike

我目前正在开发自己的 Java 库以用于我办公室的其他应用程序,并且我正在探索混淆库本身的方法。

我正在使用 Eclipse Indigo,并使用 yGuard v2.3.0.1。

首先,我的 Java 代码:

package com.test.ObfuscateTest;

public class MainClass {

private String secretClassVariable;

public static void main(String[] args) {

}

protected void SecretMethod(String secretParameter) {

secretClassVariable = secretParameter;
}
}

将 yGuard 与以下 ANT 脚本结合使用,为我生成一个空的 JAR 文件:

<?xml version="1.0" encoding="UTF-8"?>

<project name="project" default="yguard" basedir=".">

<target name="init">
<property name="project_name" value="ObfuscateTest"/>
<property name="srcDir" value="."/>
<property name="classDir" value="classes"/>
<property name="jar" value="${project_name}.jar"/>
<property name="obfjar" value="${project_name}_obf.jar"/>
<property name="renamelog" value="${project_name}_renamelog.xml"/>
<property name="shrinklog" value="${project_name}_shrinklog.xml"/>
<property name="mainclass" value="com.test.ObfuscateTest"/>
<mkdir dir="${classDir}" />
</target>


<target depends="jar" name="yguard">
<taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="/Users/foo/Desktop/yguard-2.3.0.1/lib/yguard.jar"/>
<!-- the following can be adjusted to your needs -->
<yguard>

<inoutpair in="${jar}" out="${obfjar}"/>

<!-- don't let the obfuscator remove the "Deprecated" -->
<!-- attributes from the .class file entries -->
<attribute name="Deprecated"/>

<shrink logfile="${shrinklog}">
<keep>
<class classes="none" methods="protected" fields="none">
<patternset>
<include name="com.test.ObfuscateTest.*"/>
</patternset>
</class>
</keep>
</shrink>

<rename mainclass="${mainclass}" logfile="${renamelog}">
<keep>
<class classes="none" methods="protected" fields="none">
<patternset>
<include name="com.test.ObfuscateTest.*"/>
</patternset>
</class>
</keep>
</rename>

</yguard>

</target>

<!-- compile -->
<target name="compile" depends="init">
<javac srcdir="${srcDir}" includes="com/test/ObfuscateTest/*.java" destdir="${classDir}">
</javac>
</target>

<!-- create .jar -->
<target name="jar" depends="compile">
<jar jarfile="${jar}" basedir="${classDir}" includes="com/test/ObfuscateTest/*"/>
</target>

<!-- run project -->
<target name="run" depends="yguard">
<java classname="${mainclass}" fork="true">
<classpath>
<pathelement location="${obfjar}"/>
</classpath>
</java>
</target>

<!-- removes all that has been built -->
<target name="clean" depends="init">
<delete dir="${classDir}" includeEmptyDirs="true" />
</target>
</project>

我可以请教一些关于我做错了什么的建议吗?

提前致谢!

最佳答案

收缩元素的用途不同。它指定 yguard 开始寻找依赖类的入口点。所有无法访问的类都将被删除。通常你只提供像这样的主要方法:

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

关于java - 在 Eclipse 中使用 yGuard 混淆库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com