Как адаптировать Proguard к .jar и скрыть мои личные методы? - PullRequest
2 голосов
/ 15 марта 2011

я использую proguard и скрываю свой код ... и id, кажется, работает ... 'half'. я просто хочу, чтобы это не расшифровывалось, и чтобы его работали, а рядовых не видели Джед ..

вот мой код Java

package kr.pkgcls;

public class sums {
    private int margin;
    private int resVal;
    public sums(){
        margin = 10;
        resVal = 0;
    }
    public sums(int a){
        margin = a;
        resVal = 0;
    }
    private void eval_internal(){
        margin++;
        for(int i = 0; i<margin; i++){
            resVal += i;
        }
    }
    public int eval(){
        //error!! when use "return eval_internal()", it exposes..
        eval_internal();
        return resVal;
    }
}

и вот мои .pro данные

#input file
-injars sumslib.jar
#output file
-outjars sumslib2.jar
#lib
-libraryjars <java.home>/lib/rt.jar
#basic ignores
-dontoptimize
-dontshrink
-dontusemixedcaseclassnames
-target 1.6
-verbose
-keep public class kr.pkgcls.**{
    public protected *;
}
#-dontskipnonpubliclibraryclasses
#below makes error 
#-keepparameternames
#-keepclasseswithmembernames public class *{
#   public void sums();
#   public void sums(int);
#   public int eval();
#}
#-keepclasseswithmembernames class kr.pkgcls.**{
#   public **(***); 
#}
#keepclasseswithmembernames public class *{
#}
#external file name input
-obfuscationdictionary dic.txt
-classobfuscationdictionary dic.txt
-packageobfuscationdictionary dic.txt

и вот мой вывод JAD.

   // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) radix(10) lradix(10) 

package kr.pkgcls;


public class sums
{

    public sums()
    {
        i = 10;
        l = 0;
    }

    public sums(int j)
    {
        i = j;
        l = 0;
    }

    private void i()
    {
        i++;
        for(int j = 0; j < i; j++)
            l += j;

    }

    public int eval()
    {
        i();
        return l;
    }

    private int i;
    private int l;
}

, кажется, работает, так как рядовые имена изменяются на имена других методов, а другие нет, но ДЕКОДИРОВАНО !!! что-то не так с моими опциями .pro? или .. это потому что этот код так прост?

помогите мне, ребята; - <</p>

1 Ответ

1 голос
/ 15 марта 2011

все работает как надо; Proguard не может «спрятать» код. Это может только усложнить понимание.

Это сказало: не тратьте время и деньги на такие инструменты. 1. Не остановит преданных людей. 2. Только часть знаний находится в коде. Когда кто-то пытается «украсть» (как вы «крадете» идею? Идеи растут только тогда, когда они распространяются) кода, он все равно должен начинать с нуля, пока у вас есть все знания. Например, им потребуется больше времени, чем вам, чтобы добавить функции или создать новый продукт.

Если вы обнаружите, что продукт, подозрительно похожий на вашу работу, вы всегда можете подать в суд на них за нарушение авторских прав - если вы можете доказать, что код принадлежит вам. Если вы не можете доказать это, запутывание бесполезно.

Так что, если у вас нет для использования подобных инструментов, они не предлагают никакой реальной ценности.

...