Как адаптировать Proguard к.jar и скрыть мои личные методы?

Я использую 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? или.. это потому что этот код так прост?

выручите меня, ребята;-<

1 ответ

Решение

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

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

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

Поэтому, если вам не нужно использовать подобные инструменты, они не предлагают никакой реальной ценности.

Другие вопросы по тегам