49hack

見習いエンジニアが魔法使いになるまで

脱獄端末のチェックをする

結局イタチごっこなのですが、、、脱獄対策のメソッドを書きました。

BreakThroughで脱獄回避のメソッドをすり抜けられちゃうので、BreakThroughそのもののチェックをしてみたり。

/*
 * 脱獄端末のチェック
 */
+(BOOL)isJailBreak
{
#ifdef DEBUG
    // デバッグ中は機能させない(シミュレータも引っかかっちゃうので)
    return NO;
#else
    // 脱獄回避用アプリ(BreakThrough)のチェック
    NSString *filePath = @"/Library/BreakThrough";
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
        return YES;
    }

    // bashのチェック
    FILE *f = fopen("/bin/bash", "r");
    if (f != NULL)
    {
        //Device is jailbroken
        return YES;
    }
    fclose(f);
    // system出力のチェック
    return system(NULL) != 0;
#endif
}

参考