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