「IAP クラッカー」を検出するにはどうすればいいですか? 質問する

「IAP クラッカー」を検出するにはどうすればいいですか? 質問する

多くのユーザーが、アプリ内購入 (IAP) でアイテムを購入する代わりに、いわゆる「IAP クラッカー」を使用していることがわかりました。また、Zynga Poker と Pokerist はすでに IAP クラッカーを検出し、偽の IAP を防止していることもわかりました。どの電話が IAP クラッカーを使用しているかを検出したいと思います。Cydia ハッキング ツールの場合は、アプリケーション パスで見つけることができます。

しかし、iAP クラッカーが特定のアプリケーションに該当するとは思えません。「Url Scheme」を呼び出すことでそれを確認できると思いますが、名前がわかりません。方法を知っている人はいますか?

ベストアンサー1

現時点での最善の解決策は、外部サーバーを使用して IAP トランザクションを検証し、そのサーバーでのみ生成できる有料アイテムのロックを解除するためのデバイス固有のキーを送り返すことです。これは完全ではありませんが、汎用 IAP クラッキング システムに対してアプリの耐性を高めることができます。アプリをクラックしたい人は、専用のクラックを開発する必要があります。(これははるかに複雑で、IAP クラッカーを使用するほとんどの人には手の届かないものです)

基本的に必要なことは次のとおりです。

  1. アプリ内セキュリティ ソリューションを設計します。追加機能のロックを解除する、ある種の一意のキーです。追加機能がデータ ファイルの形式である場合、これはそのファイルを解読するための暗号化キーになる可能性があります。すべてがコードである場合は、少し難しくなりますが、さまざまな独創的なソリューションがあります (暗号化された文字列定数など)。ただし、それが何であれ、Web サーバーから取得するデータの存在に依存するか、確認する必要があります。
  2. IAP 処理コードを変更して、トランザクションが処理されたことを確認すると、そのトランザクションの詳細が Web サーバーに送信され、手順 1 で必要な一意のキーが取得されるようにします。
  3. ウェブ サーバーに、トランザクションの詳細を取得し、Apple で検証する簡単なスクリプトを記述します (領収書検証の仕組みの詳細については、開発者向けドキュメントを参照してください - 非常に単純な JSON リクエスト)。検証が成功すると、ステップ 1 のキーを返します。

(ステップ 3 で行う必要がある追加の検証については、以下の編集後のテキストを参照してください)

あなたの場合、アプリはすでにクラックされており、IAP アイテムを不正に入手したユーザーを非アクティブ化しようとしているため、この機能をアプリの新しいバージョンでプッシュし、新しいバージョンが初めて実行されたときに restoreCompletedTransactions を呼び出して、正当なユーザーの購入を再検証/再アクティブ化し、他のすべてのユーザーをブロックします。

しかし、これは多く作業の大半は、スムーズに動作するようになるまでにプログラマーが数週間を費やしましたが、現在では、ステップ 2 と 3 のほとんどを処理するオープンソース コードが出回っています。また、再アクティベーションのステップにはサポートと PR のコストもかかります。必然的に、iTunes アカウントを変更したり、インターネットに接続できないなどの状況に陥る人も出てくるでしょう。そのため、正当に支払ったものに少しでもアクセスできなくなると、おそらくかなり腹を立てるでしょう。

クラックは脱獄ユーザーのみが利用できるため(つまり、潜在的顧客の約 90% は影響を受けない)、それをインストールするほとんどの人があなたのアプリにお金を払う可能性は低い場合、これに時間を投資する価値があるかどうかを検討する必要があります。アプリをクラックするユーザーの数が非常に多いからといって怖がらないでください。多くの人は、お金を払うつもりがなくても、無料でダウンロードすることを喜んでいます。正当なユーザーに利益をもたらす(そしてより多くのユーザーにあなたのアプリを購入してもらう)改善に時間を費やす方がおそらく良いでしょう。


編集1 年経った今でも、これは (ほぼ) 正確ですが、本日発表された、本物の領収書を傍受して再送信する新しいクラックに対処するには、サーバー側でもう少し作業が必要です。 (幸いなことに、検証サーバーをすでにセットアップしている場合は、アプリを更新せずにこれを実行できるはずです) 2 つの新しい要件:

1) Apple のサーバーから返された復号化されたレシート内の製品 ID (アプリケーション ID と IAP 製品 ID の両方) が、実際にユーザーが購入する製品と一致していることを確認します。

2) 以前に使用したトランザクション ID のログを保持して、領収書内のトランザクション ID (または復元領収書の場合は復元トランザクション ID) が以前に使用されたことがないことを確認します。

しかし、現在ではジェイルブレイクしていないユーザーも IAP クラッキングを利用できるようになっていますが、私の基本的な主張は、これは価値に見合わないほど面倒なことかもしれないということです。まったく面白くないコードの実装とメンテナンスに費やす時間を回収するには、結局のところ、あなたの製品にお金を払う気があまりになく、そうすることを避けるために iPhone のセキュリティを大幅に危険にさらすことをいとわない人々から、大量の追加販売を獲得する必要があります。

おすすめ記事