Pregunta

Estoy usando Proguard y ocultando mi código ... y parece funcionar ... 'mitad'. Solo quiero que no decodifique, y sea trabajado, y los privados no lo vean por Jad.

Aquí está mi código 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;
    }
}

y aquí están mis datos .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

Y aquí está mi salida de 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;
}

Parece funcionar, ya que los privados se modifican a otros nombres de métodos, mientras que otros no, ¡pero está decodificado! ¿Hay algo mal con mis opciones .pro? o ... ¿es porque este código es tan simple?

Ayúdame chicos;-

¿Fue útil?

Solución

Todo funciona como deberia; Proguard no puede "ocultar" el código. Solo puede hacer que sea más difícil de entender.

Dicho esto: No pierdas tiempo y dinero en herramientas como esa. 1. No detendrá a las personas dedicadas. 2. Solo parte del conocimiento está en el código. Cuando alguien intenta "robar" (¿cómo "robas" una idea? Las ideas solo crecen cuando se extienden) el código, aún tiene que comenzar desde cero mientras tienes todo el conocimiento. Necesitarán más tiempo que usted para agregar funciones o para construir un nuevo producto a partir de él, por ejemplo.

Si encuentra un producto que se parece sospechosamente como su trabajo, siempre puede demandarlos en la corte por infracción de derechos de autor, si puede demostrar que el código es suyo. Si no puede probarlo, la ofuscación es inútil.

Entonces a menos que tu tener Para usar herramientas como esa, no ofrecen ningún valor real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top