クラッカーからアプリ内購入を保護する方法

最近まで、inApp Purchaseは、アプリケーションのハッキングから保護するためのかなり信頼できるメカニズムでした。 開発者がアプリケーションを破線のリストに入れないようにしたい場合は、内部で販売された状態で無料でリリースしました。 回路は機能しました。 しかし、Cydia「iAP Cracker」に登場した後、状況は変わりました。

猫の下では、これらのクラッカーを完全に合法的に回避する方法が説明されています。



IQ proアプリケーションの統計を見た後、inApp Purchaseのハッキング防止について考えました。 これは、フリーミアムモデルに基づいています。 私の統計では、膨大な量の売り上げが見られました。Appleの統計では、数値は完全に異なっていました(はるかに少ない)。 それから私はブレーカーの種類は従いませんでした。 しかし、人々が「「iAPクラッカー」を使用する」というレビューを書き始めたとき、すべてが明らかになりました。



以下で説明する保護方法では、販売時にAppleが推奨するメカニズムを使用し、続いてサーバーからデータをチェックしてダウンロードします。 実際、リモートサーバーからアプリケーション自体にチケットチェックを転送しました。

MKStoreKitは、inApp Purchaseのライブラリとして使用されます。



手順:

1. MKStoreManager.hで-#define SERVER_PRODUCT_MODELをオンにします1

2.オリジナル-(BOOL)verifyReceipt-に置き換え:



- (BOOL)verifyReceipt:(NSData*)receiptData { //NSString *urlsting = @"https://sandbox.itunes.apple.com/verifyReceipt"; NSString *urlsting = @"https://buy.itunes.apple.com/verifyReceipt"; NSURL *url = [NSURL URLWithString:urlsting]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; NSString *st = [receiptData base64EncodingWithLineLength:[receiptData length]]; NSString *json = [NSString stringWithFormat:@"{\"receipt-data\":\"%@\"}", st]; [theRequest setHTTPBody:[json dataUsingEncoding:NSUTF8StringEncoding]]; [theRequest setHTTPMethod:@"POST"]; [theRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; NSString *length = [NSString stringWithFormat:@"%d", [json length]]; [theRequest setValue:length forHTTPHeaderField:@"Content-Length"]; NSHTTPURLResponse* urlResponse = nil; NSError *error = [[NSError alloc] init]; NSData *responseData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&urlResponse error:&error]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSDictionary *dic = [responseString JSONValue]; NSInteger status = [[dic objectForKey:@"status"] intValue]; BOOL retVal = NO; if (status == 0) { retVal = YES; } return retVal; }
      
      







3. JSONを操作するためのライブラリをプロジェクトに追加します(http://code.google.com/p/json-framework)

4.すべて:-)



何が起こっている:

領収書を受け取った後-確認のためにAppleサーバーに再度送信され、答えによって、必要なものすべてをすでに決定できます。

PSこの方法は「最良」であると主張していません。 あなたは、同僚がこれについてのコメントやより多くのアイデアを持っている場合-書き込みます。



All Articles