Tôi hiện đang phát triển một thư viện Java của riêng mình để được sử dụng trong các ứng dụng khác trong văn phòng của tôi và tôi đang khám phá các cách làm xáo trộn chính thư viện đó.Sử dụng yGuard để che giấu thư viện trong Eclipse
Tôi đang làm việc với Eclipse Indigo và đang sử dụng yGuard v2.3.0.1.
Thứ nhất, mã Java của tôi:
package com.test.ObfuscateTest;
public class MainClass {
private String secretClassVariable;
public static void main(String[] args) {
}
protected void SecretMethod(String secretParameter) {
secretClassVariable = secretParameter;
}
}
Sử dụng yGuard với kịch bản ANT sau, lưới cho tôi một tập tin JAR trống:
<?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>
thể tôi vui lòng yêu cầu một số lời khuyên như những gì tôi đang làm sai?
Cảm ơn rất nhiều trước!
Tại sao bạn làm xáo trộn mã sẽ được sử dụng trong văn phòng của bạn? –
Thư viện có khả năng sẽ được phát hành cho các nhà phát triển bên thứ ba, do đó, sự cần thiết phải obfuscation. – Earthling
Vâng, tôi đã nhận được ProGuard để che giấu mã của tôi khá tốt, vì vậy đó là một trong những xuống, nhưng tôi muốn biết nếu có bất kỳ cách nào để có được yGuard để làm việc. – Earthling