标签: yguard

Java混淆 - ProGuard/yGuard/other?

这与最近的这些问题类似:

用于减小大小的最佳Java混淆应用程序 创建非反向可执行的Java程序

但是,最终会推荐yGuard和另一个ProGuard,但两者都没有提及.我想知道我们是否可以对每一个进行比较,并听取围栏两侧人们的经历.在ProGuard网站上查看这个比较图表,它明显倾向于ProGuard.但是每个人的实际经验呢?哪一个产生较小的输出?哪一个更难反编译?每个支持哪些Java版本?

就个人而言,我对J2ME的观点特别感兴趣,但请不要将讨论局限于此.

java obfuscation proguard yguard java-me

19
推荐指数
2
解决办法
2万
查看次数

使用yGuard在Eclipse中对库进行模糊处理

我目前正在开发自己的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用带有以下ANT脚本的yGuard,给我一个空的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 …
Run Code Online (Sandbox Code Playgroud)

java eclipse ant obfuscation yguard

5
推荐指数
1
解决办法
4935
查看次数

使用 yGuard 在 Gradle 中混淆 Java ~ 如何排除枚举?

我的项目使用 yGuard 在 Gradle 中混淆 Java 代码。

我有一个正在用 Gson 序列化的类和枚举包。

每个枚举值都有一个@SerializedName注释,例如:

  package com.package.whatever;

  import com.google.gson.annotations.SerializedName;

  public enum Enum1 {
    @SerializedName("item1")
    item1,
    @SerializedName("item2")
    item2,
    ;
  }
Run Code Online (Sandbox Code Playgroud)

我已经在 gradle 上配置了 yguard 以停止混淆所在包上的类Enum1,如下所示:

ant.yguard() {
  inoutpair(in: shadowJar.outputs.files.singleFile, out: 
     "${buildDir}/libs/${shadowJar.archiveName}")
  rename(logfile: "${buildDir}/libs/yguard.log.xml", replaceClassNameStrings: 'true') {
    keep {
      'class'(classes: 'public', methods: 'public') {
        patternset {
          include(name: 'com.package.whatever.*')
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

这将停止对com.package.whatever包内类中的方法进行混淆,但这并没有阻止在枚举值中发生混淆。

生成的yguard.log.xml文件最终具有如下记录:

<field class="com.package.whatever.Enum1" name="item1" map="D"/>
<field class="com.package.whatever.Enum1" name="item2" map="E"/>
Run Code Online (Sandbox Code Playgroud)

如何避免这种混淆并导致 yguard 跳过枚举值?

java obfuscation enums yguard gson

5
推荐指数
1
解决办法
85
查看次数

将 yGuard Ant 任务转换为 gradle

我正在将项目构建从 ANT 移植到 Gradle。除了混淆部分外,一切都已完成,混淆任务如下build.xml

<taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="${ant.yguard.path}"/>

<target name="obfuscate-no-test" depends="no-test-jar">
  <yguard>
    <inoutpairs>
      <fileset dir="${dir.dist}">
        <include name="**/*.jar"/>
        <exclude name="**/*_obf.jar"/>
        <exclude name="**/*-doc.jar"/>
      </fileset>
    </inoutpairs>

    <externalclasses>
      <path refid="path.lib.biz"/>
      <path refid="path.lib.share"/>
      <path refid="path.lib.web"/>
    </externalclasses>

    <rename logfile="${rename.log}">
      <property name="naming-scheme" value="best"/>

      <keep>
        <class classes="none" fields="none" methods="none">
          <patternset>
            <include name="com.payeshgaran.framework.internal.**.*"/>
          </patternset>
        </class>

        <class classes="public" fields="protected" methods="protected">
          <patternset>
            <include name="com.payeshgaran.framework.**.*"/>
            <exclude name="com.payeshgaran.framework.internal.**.*"/>
          </patternset>
        </class>
      </keep>

      <adjust replacecontent="true">
        <include name="META-INF/*.tld"/>
      </adjust>
    </rename>
  </yguard>
</target>
Run Code Online (Sandbox Code Playgroud)

为了将其移植到 gradle,我这样做了:

task obfuscate(dependsOn: [":ext:build", ":biz:build", ":web:build"]) {
    ant.taskdef(name: "yguard",
            classname: "com.yworks.yguard.YGuardTask", …
Run Code Online (Sandbox Code Playgroud)

ant obfuscation groovy yguard gradle

1
推荐指数
1
解决办法
3134
查看次数

标签 统计

obfuscation ×4

yguard ×4

java ×3

ant ×2

eclipse ×1

enums ×1

gradle ×1

groovy ×1

gson ×1

java-me ×1

proguard ×1