目录:
应用安全,盗版和预防都是最近的热门话题,有充分的理由。 如果没有强大的应用程序市场,那么每月数十万个新的激活数量将无法维护,如果没有开发人员的支持,就无法实现强大的市场。 我们已经看到Android有一个内置的解决方案来防止盗版,我们也看到了如果你已经确定,并且如果该方案保持其基本形式,那么绕过它是多么容易。 谷歌暗示他们有更多的信息要分享整个主题,并且他们已经这样做了。 休息之后,让我们来看看Google员工的方法,以提供安全,安全和用户友好的方式来保护应用程序。
Android Market许可服务和许可证验证库是开发人员试图规避应用程序盗版的强大工具。 正如最近演示的那样,问题是开箱即用它并不是很难绕过。 由于人们是人,而且很多人花费的时间超过了从市场上破解99美分应用程序的价值,Trevor Johns(Android的开发计划工程师之一)已经提出了一套方便的技巧来加强提供的工具,并使反盗版措施更好地运作。
四个关键领域是:
代码混淆
代码混淆是开发人员使用的一种技巧,它改变了源代码,通过为每个代码提供别名来很难跟踪已知函数,包,类和变量。 以这个虚构的函数为例 - onRedraw() 。 您在源代码中使用该函数的每个位置都在那里,易于阅读并可能被利用。 代码混淆器将用生成的别名替换人类可读的函数 - wy23()就是一个很好的例子。 快速浏览(或自动化工具)寻找功能是行不通的,因为需要进行一些认真的挖掘才能确切了解wy23()的真正含义。 有商业Java代码obfyousk8tors(ha!)可用,Trevor推荐ProGuard,并计划在Android开发者博客上发表关于使用ProGuard的未来文章。
修改许可证库
Google建议开发人员尽可能多地更改提供的许可证库的来源,同时仍保留原始功能。 这是一种情况,只要到达目的地,所采用的路径就不重要了。 开发人员可以将函数埋入if / then语句,循环,甚至将整个库嵌入到自己的代码块中。
为了更进一步,鼓励开发人员使用散列检查和其他加密方法来生成新常量,并更改代码以查找新常量,而不是使用Google在示例代码中提供的常量。 请务必点击源链接,查看Google提供的一个很好的示例,了解如何完成此操作。 并且不要忘记在这里混淆代码!
使您的应用程序防篡改
这一个很简单。 对于黑客小偷要从您的应用程序中删除许可,他或她必须进行逆向工程并重建应用程序。 使用CRC校验来防止这种情况。 谷歌还有另一个方便的工具 - 验证Android Market是你的应用程序的安装源,如果没有,不要让它运行。 同样,在源链接上有一个很好的例子。
将许可证验证移至远程服务器
如果您的应用程序使用在线组件,Google建议您将LVL信息和响应移出应用程序并移至服务器。 当用户使用该应用时,您的服务器会向Google核对,如果所有内容都不是犹太教,则不会投放任何内容。 虽然简单,但解决这个问题也非常有效,不仅需要更改应用程序,还需要更改服务器上的内容。 请记住,本地数据永远不会安全,但正确维护和安全的服务器是一个非常难以破解的难题。
最后,Google会记住我们 - 最终用户,并建议以透明和用户友好的方式使用这些技巧。 如果您是对应用程序的完整性和盗版防护感兴趣的应用程序开发人员(并且您应该!)请务必查看源链接。 它变得令人讨厌并且模糊不清,并为您全力以赴。 对于我们其他人来说,这更像是一个关于Goggle如何喜欢它的开发者的提醒,并且我们可以感觉很好,因为大G正在尽其所能提供帮助。