[英]I there any way to detect if my app has been downloaded with Installous?
I know there's a way to check if a in App Purchase has been cracked but, is there any way to check if the app has been downloaded from the App Store? 我知道有一种方法可以检查应用程序内购买是否已被破解,但是有没有办法检查是否已从App Store下载了该应用程序?
I mean checking with my App if someone has cracked it or someone has downloaded it from Installous? 我的意思是检查我的应用程序是否有人破解了它或有人从Installous下载了它?
The short answer: no, not really. 简短的回答:不,不是真的。 For one, I don't think Apple provides a way to do this, though I could be wrong.
首先,尽管我可能错了,但我不认为苹果提供了一种方法来做到这一点。 Even if they did, though, it may not do much good.
即使他们这样做,也可能没有太大好处。
Let's assume some function named VerifyAppStorePurchase
exists that contacts Apple's servers and confirms the current user has legally purchased your app. 让我们假设存在一个名为
VerifyAppStorePurchase
函数,该函数与Apple的服务器联系并确认当前用户已合法购买了您的应用程序。 Somewhere in your app, you have code like this: 在您的应用中的某处,您具有如下代码:
if(!VerifyAppStorePurchase()) {
exit(-1);
}
This will compile to something like this (But note this is x86 assembly and not arm, so it's not exactly what you'd see on an iOS device. The same concept applies, though.): 这将编译为类似这样的内容(但请注意,这是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
I can see at least two ways a cracker could disable this check: 我可以看到至少有两种破解方法可以禁用此检查:
call
instruction with a jump past the check—a two byte patch call
指令的前两个字节替换为跳过校验的两个字节补丁 nop
instructions—again, a two byte patch nop
指令代替跳转到呼叫的退出,同样是两个字节的补丁 Signature verification would normally stop this, but jailbroken iPhones are happy to run unsigned code, so there's nothing stopping a sufficiently motivated cracker from modifying your app to disable any extra checks you add. 签名验证通常可以阻止这种情况,但是越狱的iPhone乐于运行未签名的代码,因此,没有什么可以阻止有足够动机的解密者修改您的应用程序以禁用您添加的任何额外检查的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.