Proguard 不会混淆 android 中的 strings.xml
Posted
技术标签:
【中文标题】Proguard 不会混淆 android 中的 strings.xml【英文标题】:Proguard is not obfuscating strings.xml in android 【发布时间】:2019-09-28 05:36:08 【问题描述】:我在我的项目中使用 proguard。它混淆了所有的 java 代码。但它不会混淆 strings.xml 中的任何内容。
我在 strings.xml 中有一些敏感信息。
如何让 proguard 混淆 strings.xml 中的内容? 我需要写任何具体的规则吗?
【问题讨论】:
您需要使用 DexGuard,因为字符串混淆/加密不是 ProGuard 功能。 ProGuard 不会混淆 string.xml 文件 @Basi,我的 apk 包含res
文件夹,但其中不包含 values
(以及 strings.xml
和 arrays.xml
)。
另见***.com/questions/27548810/…。
【参考方案1】:
ProGuard 无法混淆 strings.xml。您可以使用其他软件来混淆您的文件,例如 DexGuard。您可以获取更多信息here。
【讨论】:
【参考方案2】:它不会混淆 string.xml 文件。如果您将使用 .zip 重命名 .apk 文件并解压缩 zip 文件夹,那么您将获得所有资源。有几种方法可以在 android 中存储敏感数据。
-
存储在 gradle 文件中,您可以使用 BuildConfig 访问它。
放到java类文件中。
将其放入 C/C++ 文件并使用 NDK 访问该文件 // 推荐,硬
对值进行逆向工程。
以加密格式放入string.xml文件中,随时访问
必填。
【讨论】:
.so 文件中包含的所有字符串都将在库的[TEXT]
块中清晰可见,因此这也不是最佳解决方案。它会阻止学生窥视您的数据,但不会阻止真正的逆向工程师(又名“专业人士”)
我同意你的观点。您也可以将密钥字符串分成几部分并将它们保存在不同的地方,您可以创建一个算法来从 jni 文件中获取常量。【参考方案3】:
最好使用 NDK 来存储您的敏感数据。警卫队
【讨论】:
以上是关于Proguard 不会混淆 android 中的 strings.xml的主要内容,如果未能解决你的问题,请参考以下文章
Android Proguard - dontobfuscate 不会禁用混淆
从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆