Android Proguard:即使在使用Proguard之后,类和资源也是可提取的

Android Proguard:即使在使用Proguard之后,类和资源也是可提取的,android,obfuscation,reverse-engineering,proguard,Android,Obfuscation,Reverse Engineering,Proguard,我已通过取消对project.properties文件中的以下行的注释来启用Proguard: proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 当我尝试使用dex2jar提取类和资源时,我能够按原样提取它们。我是否必须更改项目中的一些其他文件/属性/配置以防止直接提取类?我应该在project.properties(项目根位置)或proguard.android文件(SDK位

我已通过取消对project.properties文件中的以下行的注释来启用Proguard:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

当我尝试使用dex2jar提取类和资源时,我能够按原样提取它们。我是否必须更改项目中的一些其他文件/属性/配置以防止直接提取类?我应该在project.properties(项目根位置)或proguard.android文件(SDK位置)中添加一些配置参数吗?

在以发布模式构建应用程序并使用有效证书和Eclipse中的导出向导导出应用程序后,是否会发生这种情况?如果否-执行以下步骤:右键单击项目,选择“导出”,键入“导出android应用程序”,然后选择“使用现有密钥库”或“创建新密钥库”,完成向导。只有在发布模式下构建应用程序时,ProGuard才会运行。

看起来您使用的是“标准”ProGuard模糊器属性文件。尝试使用“高级”Proguard模糊器属性文件。在这里:

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt
您的代码将进一步模糊,但不是全部。例如,在清单文件中声明的活动、服务、Java类,或者在Proguard中使用
-keep
指令声明的活动、服务、Java类,将不会完全混淆


另一方面:即使你使用了广告,你仍然没有100%的反编译保护。有经验的黑客可以使用smali/baksmali技术对您的代码进行反向工程、阅读和随意修改。请记住,如果代码可以被读取为0和1,那么它就可能被黑客攻击。

没有办法阻止类和资源的反编译。模糊处理,如proguard,是通过名称模糊不清、字符串模糊不清和更改流控制使java逆向工程变得更加困难的工具。尽管如前所述,一切都可以逆向工程。模糊处理用于提高进入门槛,并阻止人们因努力程度而希望对代码进行反向工程。

是。这是在我以发布模式(使用keystore)构建应用程序之后发生的。我的目的不是阻止我的apk完全被反向工程。我知道完全避免代码提取是不可能的。我只是想确保代码不可用——目前,当我尝试对apk进行反向工程时,我能够获得所有的类和资源(使用相同的类和变量名)。甚至在我取消了proguard属性的注释之后