问题
I detect IAP Cracker like this:
if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/DynamicLibraries/iap.dylib"]){
NSLog(@"IAP Cracker detected");
}
How can I detect LocallAPStore?
回答1:
After extracting the Debian package of this hack, you can see that it has almost exactly the same structure as IAP cracker. So, you can write:
if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/DynamicLibraries/LocalIAPStore.dylib"]) {
NSLog(@"Local IAP Store detected");
}
By the way, using this method is not quite effective. I'm sure that if a lot of developers use this approach, the makers of these tweaks will incorporate another hook into the dynamic library that makes the detection impossible, for example one can hook - [NSFileManager fileExistsAtPath:]
and check if the path is equal to the dylib's path and unconditionally return NO
in this case.
So, it is preferred that you use your own server for verification in case you want to use in-app purchases.
回答2:
Just verify you IAP receipts with Apple to prevent spoof purchases. See: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html
回答3:
Also, you can use dyld (or Objective-C runtime) functions to detect if the library in question is loaded. If so, try unload it.
来源:https://stackoverflow.com/questions/13325924/how-to-detect-locallapstore-new-iap-cracker