我通过取消注释 project.properties 文件中的以下行来启用 Proguard:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
当我尝试使用 dex2jar 提取类和资源时,我能够按原样提取它们。我是否必须更改项目中的一些其他文件/属性/配置以防止直接提取类?我应该在project.properties(项目根位置)或proguard.android文件(SDK位置)中添加一些配置参数吗?
最佳答案
看来您使用的是“标准”Proguard 混淆器属性文件。尝试使用“高级”Proguard 混淆器属性文件。它在这里:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt
您的代码会进一步混淆,但不是全部。例如,您在 list 文件中声明或在 Proguard 中使用 -keep
指令声明的 Activity 、服务、Java 类将不会被完全混淆。
旁注:即使您使用商业广告 DexGuard ,你仍然没有 100% 免受反编译。经验丰富的黑客可以使用smali/baksmali 技术对您的代码进行逆向工程,随意阅读、修改。请记住,如果代码可以读作 0 和 1,它就可以被破解。
关于Android混淆器: Classes and Resources extractable even after using Proguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242324/