iPhone / iPodが次のとおりであるかどうかを(プログラムで)どのように判断しますか?
- 刑務所が壊れた
- ソフトウェアのクラックされたコピーを実行する
ピンチメディアは、電話が刑務所で壊れているか、実行中のソフトウェアがクラックされているかを検出できますが、これを行う方法を知っている人はいますか?図書館はありますか?
iPhone / iPodが次のとおりであるかどうかを(プログラムで)どのように判断しますか?
ピンチメディアは、電話が刑務所で壊れているか、実行中のソフトウェアがクラックされているかを検出できますが、これを行う方法を知っている人はいますか?図書館はありますか?
アプリがクラックされたかどうかを検出する方法の 1 つを次に示します。
要するに、クラッキングには通常、Info.plist を変更する必要があります。アクセスできる通常のファイルであるため、そのような変更を特定するのは非常に簡単です。
/private/var/lib/apt/
ジェイルブレイクされた電話の検出は、フォルダーの存在を確認するのと同じくらい簡単です。これはインストーラーのみのユーザーを検出しませんが、今ではほとんどの人が Cydia、Icy、または RockYourPhone をインストールしています (これらはすべて apt を使用しています)。
海賊版ユーザーを検出する最も簡単な方法はSignerIdentity
、アプリの にキーが存在するかどうかを確認することですInfo.plist
。高度なクラッカーは標準チェックを簡単に見つけることができるため、[[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]
これらの呼び出しを、経由で入手できる Objective C ランタイムを使用して隠す#import <objc/runtime.h>
か、代替の同等のものを使用することをお勧めします。
ザコビリヤの返信を拡張するには、次のコードを使用できます。
if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
// Jailbroken
}
ただし、アプリをジェイルブレイクする人はプログラムを hexedit できます。そのため、文字列 @"SignerIdentity" を編集して @"siNGeridentity" または nil を返す何かを読み取ることができ、パスする可能性があります。
したがって、これ (またはhttp://thwart-ipa-cracks.blogspot.com/2008/11/detection.htmlからの他の提案) を使用する場合:
上記のヨネルとベンジーのコメントを拡張するには:
1)暗号化チェックに依存するLandon Fuller の方法(上記で yonel によってリンクされている) は、自動化されたクラッキング ツールによってまだ打ち負かされていない唯一の方法のようです。Apple が近いうちに LC_ENCRYPTION_INFO ヘッダーの状態を変更することについて、私はあまり心配していません。ジェイルブレイクされたiPhoneに予測できない影響があるようです(ユーザーがコピーを購入した場合でも...)
とにかく、そのコードに基づいてユーザーに対して無謀な行動を取ることはありません...
2)Benjieのコメントを補足するために。難読化 (著作権侵害防止コードで文字列値を処理する際に絶対に必要): 同様の、しかしおそらくより簡単な方法は、探している値のソルト化されたハッシュバージョンを常にチェックすることです。 たとえば (そのチェックはもはや効率的ではありませんが)、適切な定数に対して、各 MainBundle のキー名を md5(keyName + "some secret salt") としてチェックします...かなり基本的ですが、ストリング。
もちろん、これには、比較する値を間接的にクエリできる必要があります (たとえば、値を含む配列を調べることによって)。しかし、これはほとんどの場合です。