iOS越狱判断

由于最近在做App内购,需要保证支付安全,对于已越狱的iOS 设备全部不允许内购行为,简单粗暴有效,可以通过下面工具的方法判断iOS设备是否越狱。

.h 文件
#import 
@interface JailbreakDetectTool : NSObject
/**
 * 检查当前设备是否已经越狱。
 */
+ (BOOL)detectCurrentDeviceIsJailbroken;
@end
.m 文件
#import "JailbreakDetectTool.h"
#define ARRAY_SIZE(a) sizeof(a)/sizeof(a[0])
@implementation JailbreakDetectTool
// 四种检查是否越狱的方法, 只要命中一个, 就说明已经越狱.
+ (BOOL)detectCurrentDeviceIsJailbroken {
    BOOL result =  NO;
    
    result = [self detectJailBreakByJailBreakFileExisted];
    
    if (!result) {
        result = [self detectJailBreakByAppPathExisted];
    }
    
    if (!result) {
        result = [self detectJailBreakByEnvironmentExisted];
    }
    
    if (!result) {
        result = [self detectJailBreakByCydiaPathExisted];
    }
    
    return result;
}
/**
 * 判定常见的越狱文件
 * /Applications/Cydia.app
 * /Library/MobileSubstrate/MobileSubstrate.dylib
 * /bin/bash
 * /usr/sbin/sshd
 * /etc/apt
 * 这个表可以尽可能的列出来,然后判定是否存在,只要有存在的就可以认为机器是越狱了。
 */
const char* jailbreak_tool_pathes[] = {
    "/Applications/Cydia.app",
    "/Library/MobileSubstrate/MobileSubstrate.dylib",
    "/bin/bash",
    "/usr/sbin/sshd",
    "/etc/apt"
};
+ (BOOL)detectJailBreakByJailBreakFileExisted {
    for (int i = 0; i

你可能感兴趣的:(iOS越狱判断)