7

所以我发布了我的 android 应用程序,我对它进行了保护,应用了 LVL,甚至更改了一些 LVL 代码,但当然,我发现它在某个地方被一个名为 Lucky Patcher 的工具破解了。我不会问我如何才能防止像这样的一键式工具,因为我想没有单一的答案(除非你有一个想法并且可以指向我)。

我需要请你帮忙弄清楚我的代码是如何被破解的。我了解此工具需要 APK 文件并删除许可。现在考虑到这一点,我该如何获取这个 APK 文件并将其反向工程回 Java 文件,以查看该工具如何破解我的代码(所以我修复了它)

请帮助我谢谢

4

5 回答 5

1

盗版是一个大问题,我不认为任何平台或操作系统都可以完全保护它。

但是,谷歌已经制作了一些关于保护它的教程,例如: http ://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library -in-app-billing-and-app-engine.html

也: http ://android-developers.blogspot.co.il/2010/09/securing-android-lvl-applications.html

我认为您也可以使用 C 而不是 java 设置一些复杂的障碍。

此外,正如 google 建议的那样,考虑使用不同的方法:免费提供核心功能,并通过应用内计费使其余功能可购买。您还可以添加广告和一项功能以通过应用内结算来删除它们。

于 2012-06-05T20:46:14.643 回答
1

在 Proguard 之后,无法将您的代码反编译为人类可读的 Java。
虽然它使逆向工程过程更加困难,但聪明的逆向者并非不可能找出隐藏的算法。

工具方面,
使用android-apktool反编译成smali,提取所有编码的xml资源。
使用dex2jar将 Dalvik 翻译成 jar 最后使用jd-gui来查看生成的逆向 java 代码

于 2012-06-05T20:50:59.920 回答
1

这里有很多关于如何从 DEX 文件返回 Java 源的信息。另外,您是否看过这篇博客文章,其中介绍了保护您的来源的许多方法?

于 2012-06-05T20:55:08.210 回答
1

我正在考虑这个问题,如果您真的想保护您的应用程序免受黑客攻击,似乎只有一种方法可以做到这一点。您可以实施各种奇特的方法来确保您的应用程序获得许可并按照谷歌文章中的描述付费,但只需要一个优秀的黑客反编译您的应用程序并找到代码的位置,然后将其注释掉或更改功能始终返回 true。

相反,实现在 jni/ndk 中使用所需的应用程序的某些部分,并检查该代码中的验证。它不必是非常复杂的代码,但您不能只放置诸如函数之类的东西(例如 checkValidity),因为用户可以轻松地注释调用 ndk 的 java 调用。相反,您应该对您的 ndk 进行一些调用,以实际执行一些对您的应用程序运行来说并不重要的事情——用户不能只是注释掉或使用执行相同操作的已定义函数切换出来。从 ndk 代码中验证您的应用程序的完整性/许可,如果它失败,则终止应用程序或您需要做的任何事情。

为了绕过这个,黑客需要重新实现 ndk 代码或对其进行逆向工程。这应该更复杂,不值得。

这显然不是一个简单的解决方案,仍然不能保证您的应用程序永远不会被黑客入侵,但它应该比其他方法更难破解..

于 2012-06-06T20:38:54.137 回答
0

我个人认为,如果使用得当,混淆 {Proguard, Dexguard} 和原生 {.so} 是非常有效的方法。

它肯定会阻止经验不足的“玩家”,并且肯定会使甚至有经验的“玩家”的生活复杂化

不要简单地复制/粘贴 Google android 示例代码....

于 2014-04-19T08:44:47.473 回答