我知道有一种方法可以检查应用内购买是否已被破解,但有没有办法检查该应用是否已从App Store下载?
我的意思是检查我的应用程序是否有人破解了它或有人从Installous下载了它?
答案 0 :(得分:1)
答案简短:不,不是真的。首先,我不认为Apple提供了这样做的方法,尽管我可能是错的。但即使他们这样做了,也可能没什么好处。
我们假设存在一个名为VerifyAppStorePurchase
的函数,该函数与Apple的服务器联系并确认当前用户已合法购买了您的应用程序。在你的应用程序的某个地方,你有这样的代码:
if(!VerifyAppStorePurchase()) {
exit(-1);
}
这将编译为类似的东西(但请注意这是x86程序集而不是arm,因此它不完全是你在iOS设备上看到的。但是同样的概念适用。):
pushl %ebp
movl %esp, %ebp
subl $24, %esp
call _VerifyAppStorePurchase
testl %eax, %eax
je L7
# <snip app code here>
L7:
movl $-1, (%esp)
call _exit
我至少可以看到两种破解者禁用此检查的方法:
call
指令的前两个字节替换为check-a two byte patch nop
指令 - 再次,一个双字节补丁签名验证通常会停止此操作,但越狱的iPhone很乐意运行未签名的代码,因此没有什么可以阻止充满动力的破解者修改您的应用以禁用您添加的任何额外检查。