所以我发布了我的Android应用程序,我编写了它,应用了LVL,甚至改变了一些LVL代码但是当然,我发现它使用一个名为Lucky Patcher的工具破解了某个地方。我不打算问我如何防止这样的1点击工具,因为我猜没有单一的答案(除非你有一个想法并且可以指向我)。
我需要请你帮忙弄清楚我的代码是如何破解的。我知道这个工具需要APK文件并删除许可。既然如此,我怎么能拿这个APK文件并将其反向工程回Java文件,看看该工具如何破解我的代码(所以我修复了它)
请帮帮我 感谢
答案 0 :(得分: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来设置一些复杂的障碍。
另外,正如谷歌建议的那样,考虑采用不同的方法:使核心功能免费,并通过应用内结算购买其余功能。您还可以添加广告和功能,以便通过应用内结算来移除它们。
答案 1 :(得分:1)
在Proguard之后,没有办法将你的代码反编译成人类可读的Java 虽然它使逆向工程过程变得更加困难,但聪明的反向器并不是不可能找出隐藏的算法。
至于工具,
使用android-apktool反编译为smali并提取所有已编码的xml资源
使用dex2jar将Dalvik翻译成jar
最后jd-gui查看生成的反向java代码
答案 2 :(得分:1)
关于如何从DEX文件转回Java源,有很多信息here。另外,您是否看过this blog post,它解决了保护您的来源的许多方法?
答案 3 :(得分:1)
我正在考虑这个问题,似乎你真的想要从黑客那里获得你的应用程序,实际上只有一种方法可以做到这一点。您可以实施各种花哨的方法来确保您的应用程序获得许可并按照Google文章中的描述付费,但只需要一个好的黑客来反编译您的应用程序并找到代码所在的位置,然后将其注释掉或更改功能总是回归真实。
相反,实现在jni / ndk中使用所需的应用程序的某些部分,并检查该代码中的验证。它不一定是极其复杂的代码,但你不能只是放一些函数(例如checkValidity),因为用户可以轻松地注释调用ndk的java调用。相反,你应该调用你的ndk来实际做一些对你的应用程序来说非常简单的事情 - 用户不能只注释掉或者用定义的函数做同样的事情。在ndk代码中,对应用程序的完整性/许可进行验证,如果失败则终止应用程序或任何您需要执行的操作。
为了绕过这一点,黑客需要重新实现ndk代码或对其进行反向工程。这应该更复杂,不值得。
这显然不是一个简单的解决方案,仍然不能保证你的应用程序永远不会被黑客攻击,但它应该比其他方法更难打破..
答案 4 :(得分:0)
我个人认为,如果使用得当,Obfuscation {Proguard,Dexguard}和native {.so}是非常有效的方法。
它绝对能阻止经验不足的球员和球员。并且肯定会使经验丰富的球员的生活变得复杂化
不要简单地复制/粘贴Google Android示例代码....