我正在处理的应用程序会被antiLVL自动破解(虽然我的应用程序中没有使用LVL)。
为了保护我的应用免受“一键盗版”的影响,我正在实施tampering detection techniques explained at Google IO。
我尝试使用getPackageInfo()
和反射(invoke()
)检查签名,但AntiLVL能够在两种情况下自动破解应用程序。
如何编写当前版本的antiLVL(1.4.0)不会自动破解的代码?我的意思是,除了使用JNI。
PS:我不是在谈论防止盗版。我只是想让海盗手工挖掘代码,而不是使用自动裂解器。答案 0 :(得分:1)
问题是,任何仅用于检查应用程序有效性的API都可以被破坏,并替换为始终返回预期结果的版本。我没有详细介绍过Anti-LVL,但我想它会这样做,这就是为什么你为了这个目的使用Dalvik的内置API来验证代码的尝试失败了。
为了使其有效,您必须自己完成这项工作,只使用具有多种用途并且不易被破坏的API。
执行此操作的一种方法是计算.apk文件或其中的classes.dex文件的校验和,并针对某些外部资源(具有已知正确版本列表的在线服务器,将文件下载到SD)进行验证第一次执行时的卡等,.apk文件中的资源,不包含在classes.dex中)。这可以防止代码修改,我相信这是反LVL的工作原理。我自己没试过,但怀疑它应该有用。
答案 1 :(得分:0)
一些基本要点
请注意,我提供的链接末尾的#:r.page.X
无论出于何种原因,都不会始终将您带到特定的幻灯片页码。如果没有,请记下并手动浏览。