Android混淆器: Classes and Resources extractable even after using 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位置)中添加一些配置参数吗?

最佳答案

看来您使用的是“标准”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/

相关文章:

binary - 如何分析二进制文件?

android - 是否可以从命令行使用 Android Studio 的反编译器?

android - jack 似乎并没有自己混淆代码

java - 在代码中初始化的 TextView 上的 getHeight()

Android facebook SDK,使用不同语言的配置文件将图片上传到墙上?

c# - 可以将 python 代码(例如,如果我使用 djangno)混淆为与 c#/java 相同的 'level' 吗?

android - 强制 Proguard 给类中的每个方法一个唯一的名称?

android - 从当前时区转换为 UTC 减量 2 小时而不是 1 小时

c - 提供隐藏内部函数的 C API 的最佳实践

gdb - 在 GDB 中的第一条机器代码指令处停止