最近,我发现我的应用程序被一些反破解工具破解了。
这个工具可以轻松地破解我的应用程序中的“Android许可验证库”,并生成一个新的破解后的apk。
它还提供了许多功能钩子,以防止开发人员检测他们的应用程序是否被破解。例如获取文件长度函数或检查签名函数...
有人知道如何打败它吗?
谢谢。
最近,我发现我的应用程序被一些反破解工具破解了。
这个工具可以轻松地破解我的应用程序中的“Android许可验证库”,并生成一个新的破解后的apk。
它还提供了许多功能钩子,以防止开发人员检测他们的应用程序是否被破解。例如获取文件长度函数或检查签名函数...
有人知道如何打败它吗?
谢谢。
我不喜欢“去查看Google I/O演示文稿”的标准回复,因为其中提到的许多技术都被Antilvl打败了。在我看来,这是一个糟糕的建议,因为一些话题(例如反射和CRC检查)已经无法应对。
在进一步研究Antilvl时,我发现了针对Antilvl的svn主干,并在readme.txt文件中找到了非常详细的提示。这里是作者介绍的预防Antilvl的方法,由我进行了整理。依据是否存在smaliHook.java,这将返回true/false,该文件用于钩取正常包检查。由于类名可能被修改成某个经过修改的Antilvl版本,这仅作为第一道防线。但这是一个很好的第一次检查,因为它可以打败平均水平的脚本小子。
protected boolean isAntiLVL(){
try{
Class.forName("smaliHook");
return true;
}catch(Exception e){}
return false;
}
总的来说,在野外没有完全保护您的应用程序的方法。用户可能在他/她的设备上拥有root访问权限,那么所有的赌注都将无效。您可以引入一些手动的“hackarounds”,但如果您的应用程序是一个高调的应用程序,您仍然会被破解。
这只是您和黑客之间的权力游戏。如果您过于强硬地打击黑客,您可能也会伤害到公平的用户。
我还建议您查看来自Google I/O 2011的以下内容:
摘自:避免APK被破解
这对您可能非常有用!
躲避海盗和阻止吸血鬼
http://www.youtube.com/watch?v=TnSNCXR9fbY
一些基本要点