我应该使用 dexGuard、redEX 而不是 proGuard 来混淆 broadcastReceiver

Should i use dexGuard,redEX over proGuard to obfuscate broadcastReceiver

DexGuard 会帮助我混淆我的 broadcastReceiver 吗?我的一个广播接收器中有重要的算法,我需要一种方法来混淆它,但 DexGuard 需要购买许可证? Proguards 免费,有什么建议吗?我找不到 link 来通过 facebook 下载 redex,所以我认为它仍在开发中。所以我的问题是其中哪一个会混淆我的 broadcastReceiver。

我的 proguard 文件有这样的内容:

    -keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
**-keep public class * extends android.content.BroadcastReceiver**
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

注意它说要保留 broadcastReceiver,我怎样才能隐藏我的数据?我不得不尝试将我所有的逻辑移动到另一个 class 但 broadcastreceiver 会积极收集垃圾。所以不是一个选择。

你是对的,默认的 ProGuard 和 DexGuard 配置排除了扩展 BroadcastReceiver 的 classes,所以只需移动到另一个 class。将您的逻辑分开 class 会更好 OO 设计 - 使其更易于测试。当然,DexGuard 将提供比 ProGuard 更强大的保护,因为它具有特定的保护功能 Class 加密和 API 隐藏声音,就好像它们很有用一样。请注意 Android 还有其他商业混淆器。

为了提高安全性,一种选择是 store/run 本机代码中的算法,因为逆向工程更难。

但实际上正如您所说 important algorithm 我想知道它是否应该在应用程序中。在受控的服务器环境中存储和 运行 算法并拥有安全的 API 会更好 IMO - 当然没有 100% 的安全性,因为您的服务器可能会被黑客攻击,但这可能比拥有一个更好下载的每个 .apk 中的算法副本。