2

私はプロガードを使用して私のコードを隠しています..そしてidは機能しているようです...'半分'。私はそれがデコードされないようにし、動作させ、プライベートがjadに見られないようにしたいだけです。

これが私の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オプションに何か問題がありますか?または..このコードはとても単純だからですか?

みんな助けて;-<

4

1 に答える 1

1

すべてが正常に機能します。Proguardはコードを「隠す」ことはできません。それは理解を難しくするだけです。

つまり、そのようなツールに時間とお金を無駄にしないでください。1.献身的な人々を止めません。2.知識の一部のみがコードに含まれています。誰かがコードを「盗む」(アイデアを「盗む」にはどうすればよいですか?アイデアは広まったときにのみ成長します)場合でも、すべての知識を持っている間は、最初からやり直す必要があります。たとえば、機能を追加したり、そこから新製品を構築したりするには、あなたよりも多くの時間が必要になります。

自分の作品に不審に見える製品を見つけた場合は、コードが自分のものであることを証明できれば、いつでも著作権侵害で訴訟を起こすことができます。あなたがそれを証明できないなら、難読化は無駄です。

したがって、そのようなツールを使用する必要ない限り、それらは実際の価値を提供しません。

于 2011-03-15T11:19:19.900 に答える