web-dev-qa-db-ja.com

iPhoneアプリケーションの著作権侵害を減らす

Appleの評価プロセスに違反しない、iPhoneアプリケーションの違法コピーを減らすために受け入れられている方法は何ですか?

アプリケーションが「フォンホーム」で実行する一意のデバイスIDを提供する場合、作成するために他にどのような情報(Appleアプリケーションの購入に使用するID)など)を収集する必要がありますか?アプリケーションの使用を承認する有効な登録トークン?同様に、追加のデータにアクセスするにはどのコードを使用しますか?

現時点で、この問題に対する最良の技術的アプローチは何ですか?

プログラミング以外の回答違法コピーがどうして避けられないかなどについてはご遠慮ください。違法コピーが避けられないことはわかっています。プログラミングベースの回答に興味があります。 。ご理解のほどよろしくお願いいたします。)

62
Alex Reynolds

更新

訪問して読んでください

コメントでchpwnに感謝します。

古すぎるコード! -2009年5月11日

今のところ、iPhoneアプリケーションが海賊版の使用のためにクラックされているかどうかを検出する簡単な方法があります。これには、iPhoneの一意のIDを承認済みIDのリストと照合する必要はありません。

現在、クラッカーが行うことは3つあります。

  1. Info.plistファイルを編集する
  2. Info.plistをバイナリからUTF-8またはASCIIにデコードする
  3. 鍵ペアをInfo.plist {SignerIdentity、Apple iPhone OS Application Signing}に追加します}

最後のコードは、次のコードで確認するのが最も簡単です。

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
if ([info objectForKey: @"SignerIdentity"] != nil) 
{ /* do something */  }

通常、作成するApp StoreアプリケーションにはSignerIdentityが含まれていないため、nilを確認してからset命令を実行すると、クラッカーや海賊がさらに難しくなります。

私はこれを信用できないので、 iPhone IPAクラッカーを阻止する方法にアクセスしてください。 iPhoneの海賊行為とそれを抑制する方法については、たくさんの情報があります。

48
David Wong

Andrey Tarantsovがコメントで指摘したように、バイナリの "SignerIdentity"文字列を探し(HexEditのようなアプリを使用)、それを置き換えるのは非常に簡単です。

その文字列をエンコードすることもできますが、その場合も、1文字を変更するだけで、アプリは「SignerIdentity」キーを探すのではなく、おそらく存在しない他のキーを探します(したがってnullです)。 )。そのキーがnullの場合、アプリはそれがクラックされていないと見なします(アプリがクラックされていない場合、SignerIdentityはnullである必要があるため)。

代わりに、info.plistのサイズをチェックして、参照値と比較します。 SimulatorとDevicesビルドのinfo.plistファイルサイズが同じではないことに気付きました。デバッグ、リリース、ディストリビューションのビルドも同様です。したがって、デバイス配布ビルドのinfo.plistファイルサイズを使用して参照値を設定してください。

起動時のファイルサイズ を探す方法:

5
samvermette

PlistのMD5チェックサムを保存し、CryptIDをチェックすることは、しばらくの間はうまくいくはずです。

0
Prashant Rane