对于我的应用程序的付费版本,我选择解锁器应用程序路线,因为它易于实现,允许在开发者控制台中进行单独的统计,但主要是因为我不需要维护 2 个代码库(一个用于免费版本和另一个用于付费版本)。即使我使用了 CVS(我确实这样做了),继续合并功能和错误修复仍然会让人头疼。解锁器应用程序整体上更容易实现......
但这有一个严重的缺点,很容易超过安全检查;除非我在这里遗漏了什么。
无论我做什么,这样的实现总是会导致一个简单的if
,像这样:
if(Program.isPremiumVersion()) {
// Remove ads...
}
该isPremiumVersion()
方法负责检查付费解锁应用程序安装的所有工作,如果证书匹配等等。是的,解锁器应用程序受 LVL 保护(虽然我读过一些文章提到 LVL 是多么不安全,但这不是现在的重点)。但最终,无论里面的代码isPremiumVersion()
变得多么复杂,它总是导致返回一个true
或false
值。
覆盖此类安全功能只是对代码进行逆向工程并使其始终返回的问题true
。不是吗?我们如何保护我们的 Android 应用免受这种情况的影响?是的,代码被 ProGuard 混淆了。不过,对于足够熟练的人来说应该不会太难。
请注意,我不是想和饼干打架,我们根本就赢不了。我不会为此失眠,在“完美解决方案”上浪费无数时间。我只是在寻找一种让它更安全的方法。至少在理论上,这似乎很容易破解。我错了吗?
有什么想法可以提高此类功能的安全性吗?