为了避免盗版,在应用程序中添加 "in-app billing" 而不是在 Play 商店中将其作为付费应用程序发布更好吗?

Is it better to add "in-app billing" in an app instead of publishing it as a paid app in Play Store for avoiding piracy?

我在 Whosebug 上阅读了一些关于如何防止应用程序在从 Google Play 商店下载后被共享的问题的答案。如:

添加 Google 播放许可如何防止 Android 应用共享 ShareIT 等应用?

添加Google Play 许可和应用内结算如何防止 android 应用程序被外部下载 google 播放

在某些地方,我还看到 Google Play Licensing 可以通过一些第三方软件或 root 设备来破解。 youtube的这样一个视频link: How To Remove License Verification From All Android Apps

不过,视频是三年前上传的,所以不知道2020年能不能用,或者有没有其他新的方法。

那么,发布带有应用内billing/purchase的应用以避免盗版是更好的选择还是它也有一些缺点?

与任何类型的数字文档一样,验证其真实性的最安全系统是验证签名。

签名是添加到使用私钥生成的文档的一系列字节,然后可以使用 public 密钥进行验证。

许可和google应用内购买都有签名,但很少有程序员验证它,而是认为在Google的服务器上验证令牌(唯一标识符)就足够了,当黑客有可能使用相同的有效令牌复制虚假购买时(一次购买并多次使用)

另一方面,如果没有只有 Google 知道的私钥,就不可能生成有效签名。

但是一些黑客应用程序,如 freedom 改变了 Android 安全库,因此它总是允许任何签名验证,这就是 Google 推荐的原因要在外部服务器上验证签名,这里有一个如何验证的示例

您必须验证签名并且必须在外部服务器上进行,这样您的应用程序几乎不可能承认虚假购买或许可。