在APK中保护字符串

Ram*_*say 5 c# security android xamarin.android xamarin

我正在使用Xamarin的Mono for Android开发Android应用程序.我目前正在使用Google Play API添加应用内购买功能.为此,我需要从我的应用程序中向Google发送公共许可证密钥.关于此问题,Google建议如下:

安全建议:强烈建议您不要对Google Play提供的确切公共许可证密钥字符串值进行硬编码.相反,您可以在运行时从子字符串构造整个公共许可证密钥字符串,或者在将其传递给构造函数之前从加密存储中检索它.这种方法使恶意第三方更难以修改APK文件中的公共许可证密钥字符串.

我从未处理过加密,黑客攻击/破解或软件安全的任何其他方面,因此我不确定如何实施Google的建议.我的问题是如何在没有安全专家的情况下如何充分保护使用Mono for Android制作的Android APK中的字符串?

tal*_*kol 5

不要听起来太大胆,但我相信你可以放心地忽略他们的建议.他们所建议的安全性好处至多是最小的.

有关更详细的讨论,请阅读以下内容:如何在进行InApp结算时保护Google Play公钥

事实是,那里描述的方法都不是完全安全的.如果有人决定将你的公钥出来,他们就会.无论你做什么,公钥最终都会传递给ctor,因此恶意用户可以随时检查它.他们建议的所有"游戏"只是让这更难,但绝对不是不可能的.

我认为你最好的选择就是接受它的真实含义.这个密钥是公开的,因为它可能容易受到损害.因为知道这一点,所以其他人在晚上睡得很好,我认为没有理由你不应该这样:)

如果你真的无法在晚上睡觉而想做某事.将你的密钥放在代码中,前两个字符已切换.然后在运行时,在使用密钥之前切换回两个字符.这应该足以保护自己免受暴力自动攻击.智能攻击你无能为力.

编辑:

如果您正在寻找保护代码的行业标准方法,请使用商业混淆器.这些工具专为此目的而设计.一些例子是Mono for Android,代码混淆.确保使用包含字符串加密的全功能商业版本.