iOS裝置是否越獄的判斷方法

2021-06-23 01:01:45 字數 2313 閱讀 5176

蘋果是非常看重產品的安全性的,所以給使用者設計了一套複雜的安全機制。這讓喜愛自由,崇尚一切開放的程式設計師們極度不爽,於是越獄就成了蘋果和黑客們反覆鬥法的場所。總體來說,越獄可以讓我們隨意安裝、共享應用,但確實也降低了裝置的安全性,會給一些惡意應用提供方便之門。

有時我們的應用希望知道安裝的裝置是否已經越獄了,顯然,蘋果官方不會給出解決方案來的,那麼我們怎麼辦呢?因為越獄後會自動安裝cydia,所以我們可以從這方面入手;也可以借助許可權問題,去讀取應用的列表;還可以去讀環境變數,不越獄的機器應該是讀取不到任何內容的。

下面我們乙個乙個方法來講:

1. 判定常見的越獄檔案

/library/mobilesubstrate/mobilesubstrate.dylib

/bin/bash

/usr/sbin/sshd

/etc/apt

這個表可以盡可能的列出來,然後判定是否存在,只要有存在的就可以認為機器是越獄了。

[objc]view plain

copy

#define array_size(a) sizeof(a)/sizeof(a[0])

const

char

* jailbreak_tool_pathes = ;  

- (bool

)isjailbreak  

}  nslog(@"the device is not jail broken!"

);  

return

no;  

}  

2. 判斷cydia的url scheme

url scheme是可以用來在應用中撥出另乙個應用,是乙個資源的路徑(詳見《ios中如何撥出另乙個應用》),這個方法也就是在判定是否存在cydia這個應用。

[objc]view plain

copy

- (bool

)isjailbreak  

nslog(@"the device is not jail broken!"

);  

return

no;  

}  

3. 讀取系統所有應用的名稱

這個是利用不越獄的機器沒有這個許可權來判定的。

[objc]view plain

copy

- (bool

)isjailbreak  

nslog(@"the device is not jail broken!"

);  

return

no;  

}  

4. 使用stat方法來判定cydia是否存在

這個方法本身思路還是通過判定cydia應用,但方法是用的stat函式,同時會判定是否有注入動態庫。

[objc]view plain

copy

intcheckinject()  

return

1;  

}  int

checkcydia()  

} else

return

0;  

}  - (bool

)isjailbreak  

nslog(@"the device is not jail broken!"

);  

return

no;  

}  

5. 讀取環境變數

這個dyld_insert_libraries環境變數,在非越獄的機器上應該是空,越獄的機器上基本都會有library/mobilesubstrate/mobilesubstrate.dylib

[objc]view plain

copy

char

* printenv(

void

)    

- (bool

)isjailbreak  

nslog(@"the device is not jail broken!"

);  

return

no;  

}  

當然,判定乙個裝置是否越獄時,可以多種方法並用以確保準確。這裡我還想說的是越獄有完美越獄還有非完美越獄,這本身就不是官方***的行為,所以情況也是複雜多變。ios7針對沙盒機制也有了改進公升級,有些情況對新的版本或許是不合適的,這點還需要實際情況實際處理。另外,還有fork乙個子執行緒,看返回值等一些方法,這裡也不再一一枚舉。

最後,越獄畢竟會帶來不安全因素的增加,尤其是金融工具裝的比較多的情況下,強烈不推薦越獄。

iOS 判斷手機是否越獄

1.通過越獄後增加的越獄檔案判斷 通常情況下,手機越獄後會增加以下檔案 library mobilesubstrate mobilesubstrate.dylib bin bash usr sbin sshd etc apt判斷這些檔案是否存在,讓檔案新增到陣列中,遍歷陣列,如果存在任何乙個檔案,就...

ios裝置越獄

越獄的目標 手機更新到最新版本,再越獄 目前最新6.1.3,不能越獄 步驟 手機設定密碼要取消 檢視手機系統版本,並備份手機 ios 6.x 使用evasion 6.1越獄教程 ios 5.x 5.1.1越獄教程 其他系統版本,網路搜尋 檢視是否越獄成功 是否已安裝cydia應用程式 注意事項 越獄...

紹棠 iOS 判斷手機是否越獄

需新增以下c語言庫 import import import include include import import import 1.通過越獄後增加的越獄檔案判斷 一般來說,手機越獄後會增加以下檔案 library mobilesubstrate mobilesubstrate.dylib b...