本文版權歸扣丁書屋全部,轉載請保留此說明。html
越獄與開發
iPhone 在10年前問世時,並無第三方應用,連一個遊戲都沒有,可是 Nicholas Allegra 等越獄開發者將蘋果的智能手機推到了極限,由於用戶越獄後能夠在沒有蘋果容許的狀況下安裝第三方應用程序和插件。隨着時間的推移,iOS的生態愈來愈強大,其第三方應用愈來愈多,涉及的功能五花八門,從必定程度上說,越獄已經死了,但這不意味着,開發人員沒有必要越獄手機。拿到一部越了獄的手機,對開發人員來講,就像是開啓了上帝模式,你能夠進入系統看看各個系統進程是如何配合完成任務的,系統的簽名機制的工做原理等等,同時,當你以爲第三方軟件很酷時,能夠在越獄手機上分析其實現原理,瞭解競爭對手的安全性措施等等。linux
本系列介紹如何開發Tweak以增長軟件功能,如何開發Daemon保護應用的安全性,如何調試第三方應用,固然這一切都是創建在越獄手機上的。建議在閱讀本系列文章以前,先準備一臺越獄的手機。至於越獄的方法,能夠參考愛思助手越獄教程,PP助手越獄教程,固然還有盤古越獄等等,工具比較多,不一一列舉。git
越獄
越獄簡單來講,就是經過系統的漏洞(又叫Bug),拿到系統的最高權限(通常是root用戶,對於使用或瞭解linux或類linux的用戶,應該知道root用戶意味着什麼),而後利用這個最高權限,安裝必要的軟件到必要的地方,並讓這個軟件開機就以最高權限啓動。須要說明的是,開機就以最高權限權限啓動這個機制是系統自己就自帶,由於系統也須要這一權限以實現必要的功能,好比安裝應用。而越獄程序能開機自啓動則是由於他利用系統的漏洞拿到最高權限後,利用這個權限,把本身加到啓動列表中。github
對於系統來講,防止被越獄總的說來一個是對權限管控,儘可能最少使用最高權限,即不濫用最高權限,減小產生漏洞的可能性,同時系統還能夠過後彌補,好比重啓時發現被越獄了,進行自我保護,不啓動或清除掉那些異常的程序。通常來講,咱們常常說的不完美越獄就是由於沒有搞定系統的「過後彌補」這一過程。通常的現象就是越獄後的設備(iPhone或者是iPad)一旦重啓以後,會沒法進入系統,直接卡在一顆白色蘋果的界面;或者是能夠進入系統,可是越獄以後所裝的應用都沒法使用,打不開。安全
進行完前面的操做後,手機被稱之爲成功越獄(完美與不完美都認爲是成功越獄)。如咱們所知道的,咱們能夠經過ssh協議遠程進入類Unix系統(unix,linux,FreeBSD),而後操做文件,進程等。iOS系統也能夠看作是類Unix系統,從而咱們能經過ssh進入iOS設備(越獄後是能夠以root用戶進入的,這意味着什麼,你們都懂的)。至此,咱們開啓了上帝模式。框架
開發
越獄開發須要與咱們常說的應用開發區分開來,但越獄開發本質上也是在開發應用。說區分開來是由於,若是隻用應用開發,咱們徹底沒有必要越獄,要知道爲了越獄,咱們但是費了好大的功夫。通常來講,越獄開發專指Tweak開發,Daemon開發,破解開發。但越獄開發最後的產物,通常來講,仍是一個應用或是做用在某一個應用上。畢竟最終用戶都是經過應用來進行操做的。在Tweak,Daemon,破解開發中,又以Tweak開發最爲常見。本文以Tweak開發來講明越獄開發。ssh
Tweak開發是指開發一個模塊(差很少就是像Windows開發的dll,iOS開發的動態Framework,Android開發的.so或是.dex文件),而這個模塊被加載入某一個或幾個應用中。聽上去挺複雜,好比咱們如何能被應用加載,咱們又如何顯示出來(入口),好在被加載到應用這一塊不能咱們擔憂,在越獄的時候,會自帶一個越獄模塊,咱們稱之爲Cydia。當咱們提到Cydia時,能夠認爲他是一個商店,能夠收錄不被蘋果經過的軟件(固然被蘋果經過的軟件也能收錄)。也能夠認爲他是一個注入框架,全部的Tweak向Cydia註冊後,他會負責在適當的時候把咱們的Tweak注入到指定的應用(進程)中去。至此,咱們解決了第一個老是:Tweak被應用加載。工具
Tweak被加載後,按照常規開發思路,就是要找機會顯示(或者工做)了,好比用戶有4個Tab,咱們試着加入一個Tab,長按的時候,添加一個本身的菜單項,或是強制顯示已有的菜單項(好比原本有3個菜單項但軟件根據本地條件是否知足只顯示2項或1項)。這本就是一個較複雜的開發,須要用到Hook相關的技術,好在咱們不用從頭開始整理本身的Hook庫,Theos這個越獄開發工具包解決了大部分的問題。至於如何安裝這個越獄開發工具包,這篇博客iOS逆向工程之Theos已經有很詳細的說明。你們能夠試着安裝,而後按照Helloworld的教程開發第一個Tweak.開發工具
至此,2個問題均已解決。spa
本文版權歸扣丁書屋全部,轉載請保留此說明。