android - 我应该如何编码来抵抗 "one-click piracy"?

标签 android security piracy

我正在开发的应用程序被antiLVL自动破解(虽然我没有在我的应用程序中使用LVL)。

为了保护我的应用免受“一键盗版”的侵害,我正在实现 tampering detection techniques explained at Google IO .

我已尝试使用 getPackageInfo() 和反射(invoke())检查签名,但 AntiLVL 能够在这两种情况下自动破解应用程序。

如何编写不会被当前版本的antiLVL(1.4.0)自动破解的代码?我的意思是,除了使用 JNI。

PS:我不是在谈论一般性的防止盗版。我只是希望盗版者手动挖掘代码,而不是使用自动破解器。

最佳答案

问题是,任何仅用于检查应用程序有效性的 API 都可以被颠覆并替换为始终返回您期望的结果的版本。我没有详细查看 Anti-LVL,但我想它正在这样做,这就是为什么您为此目的使用 Dalvik 的内置 API 验证代码的尝试失败了。

为了让它发挥作用,您必须自己完成这项工作,仅使用具有多种用途且不易被破坏的 API。

一种方法是计算您的 .apk 文件或其中的 classes.dex 文件的校验和,并根据某些外部资源(具有已知正确版本列表的在线服务器、下载到 SD 的文件)对其进行验证卡在第一次执行等,.apk 文件中的资源不包含在 classes.dex 中)。这可以防止代码修改,我相信这就是反 LVL 的工作原理。我自己没有尝试过,但我怀疑它应该有效。

关于android - 我应该如何编码来抵抗 "one-click piracy"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9498015/

相关文章:

android - 从 phonegap 重启设备

java - 企业 Java Webstart 分发 : use site-wide accepted certificate to sign a code-signing certificate

java - Applet 应用程序因安全原因被阻止

php - .mp3 格式的 PHP 盗版保护

java - 防止全屏应用程序中的屏幕截图(打印屏幕)

iphone - 如何避免 iOS 上的盗版(通常在移动应用程序中)

android - 在 Firemonkey 中实现 Firebase 消息传递

android - 谷歌播放服务更新

android - 使多个值相等的最佳算法性能

security - OAuth 不安全还是我不明白?