如何使用 Dexguard 混淆清单文件中引用的类?

Posted

技术标签:

【中文标题】如何使用 Dexguard 混淆清单文件中引用的类?【英文标题】:How to obfuscate a class which is referenced in Manifest file using Dexguard? 【发布时间】:2017-05-13 19:14:37 【问题描述】:

我在我的应用程序中使用 Dexguard,我想混淆一个扩展 Activity 类的类,我知道这很难,因为它在 Manifest 文件中被引用。 我的问题是:有什么方法可以混淆在 Manifest 文件中引用的类?

【问题讨论】:

为什么不能混淆它?你可以像任何其他类一样混淆它。您唯一不能做的就是更改类名或包名,只要它们保持不变,您就不会有任何问题。 其实我可以看到,Manifest 文件中引用的所有类都没有被完全混淆,虽然对我来说没问题,但我还是需要更改类名和包名。跨度> @XaverKapeller 有什么方法可以做到吗? 1) 你不能。 2)那会改善什么?真的没有任何意义。恕我直言,一般来说混淆是没有意义的...... @XaverKapeller 披露类名或包名将指示实现和应用程序行为。这就是我想隐藏它们的原因。 【参考方案1】:

DexGuard 会尽可能混淆类、字段、方法、资源、资源文件、资产文件和本机库的名称,并调整它们在代码、清单和其他资源中的出现。更具体地说,DexGuard 确实混淆了活动类的名称并相应地更新清单。但是,它不会混淆导出的活动的名称,无论是显式(exported="true")还是隐式(使用意图过滤器)。 android 运行时将这些名称视为公共 API,例如对其他应用可见,因此需要保留它们。

【讨论】:

我尝试使用 -applymapping 功能.. 但在可能的映射文件中,我遇到错误“ProguardTokenType.CRLF、ProguardTokenType.FLAG_NAME、ProguardTokenType.LINE_CMT 或 ProguardTokenType.WS 预期,得到 'c'”我的映射文件只有一行:“com.android.appname.TermsAndPrivacyActivity -> com.android.dex.f:”【参考方案2】:

您可以使用此工具混淆 Manifest 文件中引用的类:Bg+ Anti Decompiler (JAVA) 免费使用。

【讨论】:

【参考方案3】:

如果在清单中具有意图过滤器并导出为 true,则 Dexguard 不会混淆活动类。如果你想混淆类,请让你的类导出为 false。

【讨论】:

以上是关于如何使用 Dexguard 混淆清单文件中引用的类?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Dexguard 混淆 android studio 中的资源文件夹?

DexGuard 如何加密类?

我应该在 proGuard 上使用 dexGuard、redEX 来混淆广播接收器吗

dexguard 混淆问题

DexGuard/Proguard 混淆注释值

Android/Java 混淆:R8 与(ProGuard 或 DexGuard)?