一般來說做iOS APP都會加入檢測越獄的方法,現將幾種知道的方法寫在下面
0x1:
_dyld_image_count 和_dyld_get_image_name()
_dyld_image_count //可以獲得APP載入的dylib的數量
_dyld_get_image_name() //可以獲得第x個dylib的全路徑
上圖所示, 只需要判斷路徑.或者dylib的名字就好.
越獄之後外掛的dylib的路徑為/Library/MobileSubstrate/DynamicLibraries
別忘了<mach-o/dyld.h>標頭檔案
複製程式碼
第一種方法 也是微信所使用的:
0x2:
利用URL Scheme
NSURL* url=[NSURL URLWithString:@"cydia://package/com.example.package"];
UIApplication* app=[UIApplication sharedApplication];
BOOL isJailBroken=[app canOpenURL:url];
if(isJailBroken){
NSLog(@"已經被越獄");
}else{
NSLog(@"未越獄");
}
複製程式碼
這也是QQ檢查越獄的一種機制
0x3:
檢測目錄
@"/etc/ssh/sshd_config";
@"/usr/libexec/ssh-keysign";
@"/usr/sbin/sshd";
@"/bin/sh";
@"/bin/bash";
@"/etc/apt";
@"/Application/Cydia.app/";
@"/Library/MobileSubstrate/MobileSubstrate.dylib"
NSFileManager* fileManager=[NSFileManager defaultManager];
[fileManager fileExistsAtPath:] //以上任意一種
只要返回結果是1 那就是越獄了的
複製程式碼
也是QQ檢測越獄的一種方式
一般來說客戶端可以做適當的混淆,或者函式名不要那麼的明顯,比如:isJailbroken...很明顯一看就是檢測越獄的..記得曾經看到有人用[ woHaveMeiHaveZiYou]來檢測.也是妥妥的.