我像这样检测 IAP Cracker:
if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/DynamicLibraries/iap.dylib"]){
NSLog(@"IAP Cracker detected");
}
如何检测 LocallAPStore?
解压这个hack的Debian包后,你可以看到它和IAP破解器的结构几乎一模一样。所以,你可以写:
if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/DynamicLibraries/LocalIAPStore.dylib"]) {
NSLog(@"Local IAP Store detected");
}
顺便说一句,使用这种方法不是很有效。我敢肯定,如果很多开发人员使用这种方法,这些调整的制造者会将另一个钩子合并到动态库中,这使得检测变得不可能,例如可以钩子- [NSFileManager fileExistsAtPath:]
并检查路径是否等于 dylib 的路径和NO
在这种情况下无条件返回。
因此,如果您想使用应用内购买,最好使用自己的服务器进行验证。
只需向 Apple 验证您的 IAP 收据即可防止欺诈购买。请参阅:http: //developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html
此外,您可以使用 dyld(或 Objective-C 运行时)函数来检测是否加载了相关库。如果是这样,请尝试卸载它。