2012年8月27日 星期一

如何偵測手機是否JB



http://iosdevelopersnote.blogspot.tw/2012/02/jb.html




這篇的討論是用幾個常見 JB 過的行為來偵測是不是 JB 了,而沒辦法提供一個 100% 肯定的解決方法。首先我們來看一下 JB 過的 iOS 會有那幾個特色?
  1. 會有 Cyndia 這個 App
  2. 會需要背景執行
  3. info.plist 的SignerIdentity會被變動
我們就上面三點來假設都是 JB 需要做的行為,如果我們取得這些行為之後留下來的證據,就可以假設此手機是被 JB 了。我必需要再強調一次,這篇文章的行為我都還沒有真正測試過,只是收集網路上和書上的例子寫成,還請大家補充。
如何檢查此手機是不是安裝了 Cydia
NSString *filePath = @"/Applications/Cydia.app";
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
// 檢查是不是有 Cydia 這個程式
}
一般來說 iOS 現在是多工,方便切換程式而不是像 Mac 或 PC 作業系統的背景執行,通常 JB 後會把背景執行這個功能打開就會用到 fork() 這個指令,所以檢查有沒有背景執行的功能(fork())就可以知道有沒有 JB。
int result = fork();
if (result > 0) {
     NSLog(@"JBed");
}else{
     NSLog(@"NO JB");
}

沒有留言:

張貼留言