12

クラックされた iPhone アプリのブラックリスト サービスを構築しています。

現時点では、次のアプリ クラック検出方法がサービスで利用可能です。

  1. plistのサイズをチェックする
  2. 署名者の身元の確認
  3. バイナリが暗号化されているかどうかを確認します(この方法でクラックされたアプリが検出されなかったため、これが正しく機能しているかどうかはわかりません)
  4. パッケージの変更日に対して info.plist の変更日を確認します (これが機能しているかどうかは不明です - http://snippie.net/snip/f7530ff2 のようなコードを使用それを行います)

また、デバイスがジェイルブレイクされているかどうかを確認することは可能ですか? サービスはスパムのブラックリストのように機能し、ジェイルブレイクを使用してスコアを上げることができるため、これも役立ちます.

また、ハニーポットも含めました。これは、クラッカーが使用するツールによって、私が行っているチェックの一部が省略されていることを示しています。たとえば、サイズまたは署名者の ID の plist チェック。

私の質問は今です:

  • 使用すべき「適切な」チェックは他にありますか?

  • 脱獄を検出する方法はありますか?

助けてくれてありがとう!

4

2 に答える 2

18

ジェイルブレイクされたデバイスがアプリを使用するのを決してブロックしようとしないでください。クラックされたデバイスだけです。ジェイルブレイクされたデバイスをブロックすると、すべてのチェックが削除されたパッチが適用されたバージョンの使用が強制されます。
また、私のデバイスはすべてジェイルブレイクされているため、開発者がジェイルブレイクされたデバイスをブロックした場合、そのアプリを無視する必要があります。すべての iDevice の 10% 以上がジェイルブレイクされているため、これは非常に悪い考えです。

編集:これに対して多くの反対票が寄せられているので、ジェイルブレイクを検出する方法をいくつか投稿します。

- (BOOL)fileExistsAtPath:(NSString *)path{
    NSLog(@"Check if file '%@' exists", path);

    struct stat buffer;   
    return stat([path UTF8String], &buffer) == 0;
}

- (BOOL)jailbroken{
    return ([self fileExistsAtPath:@"/Applications/Cydia.app"]);
}
于 2011-01-18T21:42:55.393 に答える
7
-(IBAction)rootCheck:(id)sender {

    NSArray *jailbrokenPath = [NSArray arrayWithObjects:
                               @"/Applications/Cydia.app",
                               @"/Applications/RockApp.app",
                               @"/Applications/Icy.app",
                               @"/usr/sbin/sshd",
                               @"/usr/bin/sshd",
                               @"/usr/libexec/sftp-server",
                               @"/Applications/WinterBoard.app",
                               @"/Applications/SBSettings.app",
                               @"/Applications/MxTube.app",
                               @"/Applications/IntelliScreen.app",
                               @"/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
                               @"/Applications/FakeCarrier.app",
                               @"/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
                               @"/private/var/lib/apt",
                               @"/Applications/blackra1n.app",
                               @"/private/var/stash",
                               @"/private/var/mobile/Library/SBSettings/Themes",
                               @"/System/Library/LaunchDaemons/com.ikey.bbot.plist",
                               @"/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
                               @"/private/var/tmp/cydia.log",
                               @"/private/var/lib/cydia", nil];

    NSString *rooted;
    for(NSString *string in jailbrokenPath)
        if ([[NSFileManager defaultManager] fileExistsAtPath:string])
            rooted=@"y";
        else
            rooted=@"n";

    NSLog(@"%@", rooted);
}

サンプルコード: http://www.evernote.com/shard/s13/sh/e45f27ee-3dd5-4eb1-9f56-1981cdd3286b/bc156eb773315647c13c2c7ee4191866

于 2011-09-15T03:13:12.173 に答える