简体   繁体   English

我有什么方法可以检测我的应用是否已通过Installous下载?

[英]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: 我可以看到至少有两种破解方法可以禁用此检查:

  • Replace the first two bytes of the call instruction with a jump past the check—a two byte patch call指令的前两个字节替换为跳过校验的两个字节补丁
  • Replace the jump to the call to exit with a couple 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.

相关问题 检测是否已从集成的应用商店IOS下载应用 - Detect if app has been downloaded from integrated app store IOS 有没有办法检测照片库中的照片是否曾经被编辑过? - Is there a way to detect whether a photo in the photo library has ever been edited? 检测何时在iOS应用程序的iCloud中上载或修改了文档 - Detect when a document has been uploaded or modified in iCloud on iOS app 在我的ipad中下载的任何pdf应用程序中显示pdf文件 - Displaying the pdf file in any one of the pdf app downloaded in my ipad 有什么方法可以检查SKSpriteNode是否已从父级移除? - Is there any way to check if an SKSpriteNode has been removed from parent? 如何暂停我的应用程序,直到提交崩溃报告? - How do I pause my app until a crash report has been submitted? 在“保存到相机胶卷”期间,如何确定已下载了多少? - During Save to Camera Roll, how do I determine how much has been downloaded? 我可以检测是否触摸了更高的子视图吗? - Can I detect if higher subview has been touched? 在Xcode应用程序中单击按钮后,如何播放自定义声音? - How can I play a custom sound after a button has been clicked in my Xcode app? 检查我的UIView是否已显示的最佳方法是什么? - What is the best way to check if my UIView has already been shown?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM