我正在使用proguard并隐藏我的代码..而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选项有什么不对吗?或..是因为这段代码很简单吗?
帮帮我们; - &lt;
答案 0 :(得分:1)
一切正常; Proguard无法“隐藏”代码。它只会让人难以理解。
那说:不要在这样的工具上浪费时间和金钱。 1.不会停止敬业的人。 2.只有部分知识存在于代码中。当有人试图“窃取”(你如何“窃取”一个想法?想法只会在他们传播时增长)代码,他们仍然必须从头开始,同时掌握所有知识。例如,他们需要比你更多的时间来添加功能或从中构建新产品。
如果您发现的产品看起来很像您的作品,您可以随时在法庭上起诉他们侵犯版权 - 如果您能证明代码是您的。如果你无法证明,混淆是徒劳的。
因此,除非你 使用这样的工具,否则它们不会提供任何真正的价值。