DexGuard会帮我混淆我的broadcastReceiver吗?我在我的一个广播接收器中有重要的算法,我需要一种方法来混淆它,但是DexGuard需要购买许可证吗? Proguards免费,有什么建议吗?我无法找到一个链接下载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,我该如何隐藏我的数据?我必须尝试将我的所有逻辑移动到另一个类,但广播接收器会积极收集垃圾。所以不是一个选择。
答案 0 :(得分:0)
你是对的默认ProGuard和DexGuard配置排除了扩展BroadcastReceiver
的类,所以只需移动到另一个类。将您的逻辑放在单独的类中会更好的OO设计 - 使其更易于测试。当然,DexGuard将提供比ProGuard更强大的保护,因为它具有特定的保护功能,类加密和API隐藏声音就像它们有用一样。请注意,Android还有其他商业混淆器。
为了提高安全性,一个选项是在本机代码中存储/运行算法,因为它更难以进行逆向工程。
但实际上正如你所说important algorithm
我想知道它是否应该在应用程序中。在受控服务器环境中存储和运行算法并拥有安全的API将是更好的IMO - 当然没有100%的安全性,因为您的服务器可能被黑客攻击但这可能比在每个.apk中都有算法的副本更好下载。