Google的文档中写到:
为了保护您的公钥免受恶意用户和黑客的攻击,请不要这样做将其作为字面值字符串嵌入任何代码中。相反,构造或使用位操作(例如,XOR(使用其他字符串)来隐藏实际的键。关键是不是机密信息,而是你不想让它轻易泄露黑客或恶意用户将公钥替换为其他密钥。
但是验证过程调用了存储私钥的谷歌服务器,所以如果他们替换了密钥呢?无论如何,它都会被调用到Google服务器
拒绝。或者这是否意味着黑客也修改了apks代码,并将对谷歌服务器的调用替换为对其私人服务器的调用?如果是这种情况,那么让公钥可见是最小的问题。
我错过了什么?
公钥(或许可密钥)用于从INAPP_PURCHASE_DATA
JSON对象创建INAPP_DATA_SIGNATURE
。
智能IAP/IAB破解者可以使用自己的私钥创建自己的INAPP_DATA_SIGNATURE
。如果你的公钥在应用程序中是硬编码和未混淆的,它可以用自己的公钥替换它,使任何客户端验证都能返回真值。