如何混淆Android推送通知的GCM密钥

如何混淆Android推送通知的GCM密钥,android,push-notification,obfuscation,google-cloud-messaging,Android,Push Notification,Obfuscation,Google Cloud Messaging,服务器密钥保留在代码中,因此如果有人最终对源代码进行反编译,我相信即使proguard打开,他们也可以看到密钥。如何让proguard对此进行模糊处理,或者至少优化模糊处理 我怎样才能让proguard把这件事弄糊涂呢 你不能。ProGuard的商业分支DexGuard具有一些模糊数据的能力,但它不太可能像您自己的任何国产解决方案那样特别有用。攻击者只需获取您的APK,用自己的超类替换GCMinentService的超类,然后记录该值 有人可以将通知推送到所有订阅者 如果您有证据证明这是可能的,

服务器密钥保留在代码中,因此如果有人最终对源代码进行反编译,我相信即使proguard打开,他们也可以看到密钥。如何让proguard对此进行模糊处理,或者至少优化模糊处理

我怎样才能让proguard把这件事弄糊涂呢

你不能。ProGuard的商业分支DexGuard具有一些模糊数据的能力,但它不太可能像您自己的任何国产解决方案那样特别有用。攻击者只需获取您的APK,用自己的超类替换GCMinentService的超类,然后记录该值


有人可以将通知推送到所有订阅者


如果您有证据证明这是可能的,请联系security@android.com. 由于发送通知不涉及项目ID,因此我无法看到您的攻击将如何工作,但可能我遗漏了一些内容。

您在这里没有问题。有两个“键”,senderId(属于Android代码)和API键。 应用程序中的senderId仅表示应用程序允许从哪个服务器接收消息。有人无法利用此漏洞发送消息。 API密钥应保密。这是服务器中用于在GCM服务器上标识的密钥。在任何情况下,此密钥都不应位于应用程序的源中。
因此,我建议您仔细阅读GCM指南,以了解完整的关系。

“服务器密钥保留在代码中”——该代码位于您的服务器上。这就是为什么他们称之为“服务器密钥”。“因此,如果有人最终对源代码进行反编译,即使proguard打开,他们也可以看到密钥,我相信”--他们将如何将源代码添加到您的服务器应用程序?您好,我指的是谷歌项目Id:public class gcminentservice extensed GCMBaseIntentService{public gcminentservice(){super(“我的项目Id_在这里”)}……如果有人看到你的项目ID,你预计会出现什么具体问题?有人可以向所有订阅者发送通知。并且可以假装有人不在那里。你说的对,我有个大脑屁。我把GOOGLE_API_密钥和发送者密钥混在一起了……GOOGLE_API_密钥我已经安全地保存在我的服务器上。这这是公认的答案。