偏執的iOS逆向研究員:收集全版本的macOS iOS+越獄+內核調試

Intro

雖然「只有偏執狂纔可以生存」這句話已經被假藥停給毀了,可是做爲一隻有逼格的高大上的iOS逆向分析研究員,難道若是有現成的macOS/iOS全版本鏡像能夠下載而且無限「漫遊」,難道你就不想來一套麼?php

在本文中,你將可以得到的是:html

  • macOS:10.1210.1110.1010.910.810.7:六個版本的虛擬機一鍵安裝;nginx

  • 使用蘋果的KDK套件(Kernel Develop Kit)對虛擬機裏的macOS Sierra 10.12進行內核調試;git

  • iPhone 4s iOS 9.3.5免shsh降級到iOS 6.1.3iOS 8.4.1github

  • iOS 六、七、八、九、10:全系統越獄;一部4和一部4s,實現iOS 六、七、八、9任意漫遊;macos

六個版本的虛擬機一鍵安裝

Vagrant是一個基於Ruby的工具,用於建立和部署虛擬化開發環境。它使用Oracle的開源VirtualBox虛擬化系統,使用 Chef建立自動化封裝虛擬環境。咱們能夠經過 Vagrant 封裝一個Linux/macOS/Windows的開發環境,分發給團隊成員。成員能夠在本身喜歡的桌面系統(Mac/Windows/Linux)上開發程序,代碼卻能統一在封裝好的環境裏運行,很是霸氣。api

封裝好的虛擬機,能夠在Vagrant的虛擬機市場上進行分發,供全世界的開發者進行下載。緩存

咱們首先來介紹一下Vagrant的虛擬機市場,而後以安裝macOS Sierra 10.12爲例,闡述虛擬機的一鍵安裝流程。ruby

Vagrant的虛擬機市場

很少說了!放圖吧!bash

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

相信讀者也知道是什麼意思!點進去相應連接以後,就會有相應的虛擬機介紹,以及安裝方法。

怎麼樣,很全面吧?筆者已經在這裏找到了10.7~10.12的全系虛擬機。

Vagrant和Virtualbox在Win/Linux/macOS全桌面平臺都有客戶端的,讀者自行在其主頁下載便可。

「一鍵安裝」macOS Sierra 10.12

首先聲明,我說謊了,不是「一鍵」,而是「兩鍵」。


vagrant init AndrewDryga/vagrant-box-osx
vagrant up

對的,只要這兩句話,就行了。

第一句話運行以後,會在當前目錄下自動生成Vagrant的配置文件vagrantfile和文件夾.vagrant。第二句話運行後vagrant就會自動下載安裝AndrewDryga/vagrant-box-osx這個虛擬機了,而且在安裝完成後在後臺打開。使用Virtualbox的控制檯就能夠看到了。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'AndrewDryga/vagrant-box-osx' could not be found. Attempting to find and install...
  default: Box Provider: virtualbox
  default: Box Version: >= 0
==> default: Loading metadata for box 'AndrewDryga/vagrant-box-osx'
  default: URL: https://vagrantcloud.com/AndrewDryga/vagrant-box-osx
==> default: Adding box 'AndrewDryga/vagrant-box-osx' (v0.2.1) for provider: virtualbox
  default: Downloading: https://vagrantcloud.com/AndrewDryga/boxes/vagrant-box-osx/versions/0.2.1/providers/virtualbox.box
  default: Progress: 0% (Rate: 1328k/s, Estimated time remaining: 6:54:31)
...
...

  default: Box Provider: virtualbox
  default: Box Version: >= 0
==> default: Box file was not detected as metadata. Adding it directly...
==> default: Adding box 'osx-sierra-0.3.1.box' (v0) for provider: virtualbox
  default: Unpacking necessary files from: file:///Volumes/3T-B/VM_BOX/macos.sierra.10.12/osx-sierra-0.3.1.box
==> default: Successfully added box 'osx-sierra-0.3.1.box' (v0) for 'virtualbox'!
==> default: Importing base box 'osx-sierra-0.3.1.box'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: macossierra1012_default_1506781540910_5049
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
  default: Adapter 1: nat
==> default: Forwarding ports...
  default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
  default: SSH address: 127.0.0.1:2222
  default: SSH username: vagrant
  default: SSH auth method: private key
  default:
  default: Vagrant insecure key detected. Vagrant will automatically replace
  default: this with a newly generated keypair for better security.
  default:
  default: Inserting generated public key within guest...
  default: Removing insecure key from the guest if it's present...
  default: Key inserted! Disconnecting and reconnecting using new SSH key...
The private key to connect to this box via SSH has invalid permissions
set on it. The permissions of the private key should be set to 0600, otherwise SSH will
ignore the key. Vagrant tried to do this automatically for you but failed. Please set the
permissions on the following file to 0600 and then try running this command again:

/Volumes/3T-B/VM_BOX/macos.sierra.10.12/.vagrant/machines/default/virtualbox/private_key

Note that this error occurs after Vagrant automatically tries to
do this for you. The likely cause of this error is a lack of filesystem
permissions or even filesystem functionality. For example, if your
Vagrant data is on a USB stick, a common case is that chmod is
not supported. The key will need to be moved to a filesystem that
supports chmod.

使用KDK對macOS Sierra 10.12進行內核調試

就拿上文剛剛安裝的這個虛擬機來進行內核調試吧!

關機後在「設置」→「網絡」裏,將「鏈接方式」改爲「橋接網卡」,後續追蹤IP時比較容易定位。重啓使其生效。

在蘋果的開發者下載中心,下載內核調試套件Kernel Debug Kit,這時候首先要肯定本身的系統版本,筆者本機是10.12.6,被調試機器的版本比較重要,由於是它來安裝KDK,調試機只須要有Xcode順帶的lldb便可。虛擬機系統版本爲10.12.2,點擊「屏幕左上角黑蘋果」→「關於本機」→「系統報告」→左側下拉選擇「軟件」,右側即會出現當前系統的版本號及編譯號,筆者爲16C67,請見下圖。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

因此在蘋果的開發者中心,也選擇下載16C67這個版本,也就是Kernel_Debug_Kit_10.12.2_build_16C67.dmg,請見下圖。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

在KDK包中包含了大量的調試符號和一些內核驅動模塊,能夠提供Release、Debug、Development三種模式的鏈接方式,其中後兩種能夠提供完整的調試和開發功能,包含了斷點和錯誤檢查等調試所必須的功能模塊。只有被調試的機器須要安裝KDK包,本節中也就是虛擬機須要安裝,調試機不須要安裝KDK包,調試機中只要有上一章安裝好的Xcode自帶的lldb便可。

咱們把下載好的Kernel_Debug_Kit_10.12.2_build_16C67.dmgscp傳輸到虛擬機上,在虛擬機上安裝。


$ scp Kernel_Debug_Kit_10.12.2_build_16C67.dmg vagrant@192.168.8.119:/Users/vagrant/Desktop/
The authenticity of host '192.168.8.119 (192.168.8.119)' can't be established.
ECDSA key fingerprint is SHA256:d3r08Htc*mUg6qtgiCvbd13sXFuYmo*dkFt5J17sx4U.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.119' (ECDSA) to the list of known hosts.
Password:
Kernel_Debug_Kit_10.12.2_build_16C67.dmg       100%   69MB 44.0MB/s   00:01

到桌面上雙擊dmg文件,裏面是一個pkg安裝包,雙擊進行安裝便可。

安裝完成以後,咱們來將虛擬機內的macOS以調試模式來啓動,方法就是設置nvramboot-args參數,來達到切換啓動模式的目標。在這裏稍微介紹一下nvram

  • -v: 輸出全部日誌

  • kcsuffix: 經過增長後綴指定啓動內核

  • pmuflags: 不少文章裏提到這個要設置爲1,說是用來禁用「watchdog」定時器模塊。然而Apple’s Kernel Programming Guide提到watchdog定時器模塊僅僅存在於G五、G4時代的主機上,要麼就是OS X Server的某些主機會啓用,這個選項幾乎是沒意義的,固然,設置一下倒也無妨。

  • debug: 這個選項就是用來進行內核調試的關鍵了,其參數標誌位及含義已經在Apple docs蘋果文檔裏載明,咱們主要須要使用到它三個標誌位:DB_LOG_PI_SCRN | DB_ARP | DB_NMI.

通常狀況下咱們設置nvramboot-args參數只要$ sudo nvram boot-args="-v debug=0x144"這麼一行代碼就行了,哪怕在VMWare虛擬機中,也是一樣的狀況。這行代碼是將boot-args及其參數寫到EFI啓動分區去的,VirtualBox的啓動分區是不容許內部主機接觸的,所以即便執行了這個命令,也不會生效。必須由VirtualBox本身來進行設定。

虛擬機關機以後,咱們回到主機上,在主機上運行如下命令:


$ VBoxManage setextradata "macOS_Sierra_10.12.6" "VBoxInternal2/EfiBootArgs" "debug=0x141 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"

咱們來解釋一下這個命令,VBoxManage setextradata很明顯是增長虛擬機配置,"macOS_Sierra_10.12.6"是虛擬機的名字,在VirtualBox主界面就可以看到的名字,"VBoxInternal2/EfiBootArgs"就是增長EFI的BootArgs配置,debug=0x141 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v就是咱們須要加入的啓動參數了,使虛擬機進入調試模式。

順便介紹另一個命令:VBoxManage setextradata "macOS_Sierra_10.12.6" VBoxInternal2/EfiGopMode 4能夠將虛擬機的顯示大小設置爲1440×900的分辨率。這裏0,1,2,3,4 分別表明了the 640×480, 800×600, 1024×768, 1280×1024, 1440×900的分辨率。

接下來就是把系統原來的內核,更換成咱們給它下載的這個內核。相似於把汽車的發動機給完整換一套新的,車還能跑,只不過內核已經換了。要換內核,就要把SIP關閉。由於內核是受SIP保護的。在VirtualBox裏關閉SIP有一點麻煩,咱們快速過一遍。

虛擬機開機後馬上迅速點按F12,進入VirtualBox的BIOS,選擇Boot Manager,再選擇EFI Internal Shell,進入Shell以後輸入FS2:,而後回車,再輸入cd com.apple.recovery.boot,回車,再輸入boot.efi,而後回車,請見下圖。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

這樣就進入macOS恢復系統了,進入恢復系統以後,在實用工具打開終端,輸入csrutil disable,禁用SIP,來禁用SIP。趁着在恢復系統這樣的特權模式下,咱們把剩下的該作的了也作了吧。

替換內核:

$ cp -rf /Volumes/vagrant-box-osx/Library/Developer/KDKs/KDK_10.12.2_16C67.kdk/System/ /Volumes/vagrant-box-osx/System/

而後清除一下原先的系統緩存。


$ kextcache -invalidate /Volumes/vagrant-box-osx/
kextcache -invalidate /
/ locked; waiting for lock.
Lock acquired; proceeding.
kextcache -arch x86_64 -local-root -all-loaded -kernel /System/Library/Kernels/kernel -prelinked-kernel /System/Library/PrelinkedKernels/prelinkedkernel -volume-root / /System/Library/Extensions /Library/Extensions
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOUSBHostFamily.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOUSBFamily.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOSerialFamily.kext
...
...
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IONetworkingFamily.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOHIDFamily.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOFireWireSBP2.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOFireWireFamily.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOATAFamily.kext
kext-dev-mode allowing invalid signature -67013 0xFFFFFFFFFFFEFA3B for kext AppleMobileDevice.kext
KernelCache ID: 20FF78CD8E2177B1E0E6686E0ACDC97A
symlink("/System/Library/PrelinkedKernels/prelinkedkernel.development", "/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache.development") failed 17 (File exists) <createPrelinkedKernel 2795>

最後重啓,運行reboot命令,可能會等一下子(大概三五分鐘),由於磁盤尚未準備完成。重啓以後,系統則開始得到IP,進入等待鏈接狀態,以下圖所示。。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

VirtualBox有個很差的地方,就是EFI啓動引導中容許自定義的參數只有bootargs這一項,而使用csrutil工具來關閉SIP的時候,須要設置csr-active-config參數,也就是說,每次關機後,SIP就又回來了。不過並不影響調試,每次開機按F12,進恢復模式,而後重複如下三個步驟就能夠了。

  • kextcache -invalidate /Volumes/vagrant-box-osx/:清除內核緩存

  • csrutil disable:關閉SIP

  • reboot:重啓

重啓後就又進去「嶄新」的調試模式了。

咱們在調試機器上,使用lldb連上去:


$ lldb
Voltron loaded.
(lldb) kdp-remote 192.168.8.119
Version: Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:59 PST 2016; root:xnu-3789.31.2~1/DEVELOPMENT_X86_64; UUID=B41FA753-B6B0-3310-8CF5-7568DDABDA5D; stext=0xffffff8016e00000
Kernel UUID: B41FA753-B6B0-3310-8CF5-7568DDABDA5D
Load Address: 0xffffff8016e00000
WARNING: Unable to locate kernel binary on the debugger system.
Process 1 stopped
* thread #1, stop reason = signal SIGSTOP
  frame #0: 0xffffff8017008a94
-> 0xffffff8017008a94: movl   $0x0, 0x871b26(%rip)
  0xffffff8017008a9e: addq   $0x8, %rsp
  0xffffff8017008aa2: popq   %rbx
  0xffffff8017008aa3: popq   %r14
(lldb)

鏈接成功。被調試機器上顯示Connected to remote server

如今就能夠開始調試內核了。

iPhone 4s免shsh降級三系統漫遊

iPhone 4s的最新版系統是iOS 9.3.5,也就是說無論怎麼折騰,都不用擔憂側漏了。可是!(敲黑板!)(重點在這裏!)蘋果爲iPhone 4s還保留着iOS 8.4.1iOS 6.1.3的簽名,這是官方爲版本太舊的機型升到新版本時準備的階梯版本,好比如今還在iOS 5的用戶,他會收到升級到iOS 6.1.3的通知,而後下一步就是升到iOS 8.4.1,最後纔是升級到iOS 9.3.5。因此,如今咱們就能夠利用這個機制,完成iOS 九、六、8三個版本的漫遊!。首先使用下面的tsschecker命令來保存這兩個版本的shsh2,萬一某一天失效了呢?


$ ./tsschecker_macos -d iPhone4,1 -e 4B5E0EC3CB -i 6.1.3 -o -s
$ ./tsschecker_macos -d iPhone4,1 -e 4B5E0EC3CB -i 8.4.1 -o -s

tsschecker從其官方Github網站上進行下載,4s鏈接到主機以後,就能夠運行上述命令了。

還有就是,想要從9.3.5直接降到舊的版本是不可能的,若是嘗試在iTunes裏直接恢復iOS 6.1.3的固件,會出現如下提示:

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

「沒法爲這個鏡像受權」。另外再提一句,在iTunes裏進行鏡像恢復的方法,win系統在iTunes裏按住shift點恢復,選擇你下好的ipws文件;Mac系統在itunes裏按住option點恢復,選擇你下好的ipws文件;固然仍是那句話,須要蘋果驗證服務器的支持。

因此如今咱們就來作一點蘋果服務器不支持的事情,好比任意版本恢復到iOS 6.1.3

首先在手機上進行iBBS的破解。

將iPhone 4s越獄以後,在Cydia裏添加tihmstar的源,地址是:repo.tihmstar.net,在源裏安裝kDFUApp,點擊該App打開。而後從上至下依次勾選上屏幕上的四個選項,注意勾選完第二個選項以後,要等一下子,等它下載完iBBS以後,才能夠繼續勾選第三和第四個選項。等ready to enter kDFU mode出現以後,將手機鏈接到電腦,點擊enter kDFU就能夠進入DFU模式啦。

DFU模式是比恢復模式處於更加純淨和早期階段的模式,這時候屏幕是黑色的,iTune會顯示檢測處處於恢復模式的iPhone。

準備好shsh2和ipsw鏡像,安裝futurerestore

shsh2能夠用上文的命令來獲取,ipsw鏡像咱們仍是從ipse.me來獲取,futurerestore能夠從官方下載連接下載最新的版本。

進行恢復

下載後解壓,爲futurerestore_macos二進制包增長可執行權限以後,直接運行便可查看其選項。


$ chmod *x futurerestore_macos
$ ./futurerestore_macos
Version: b99eb8140d8e6c23f34e950102bb79e61c72384d - 152
Libipatcher Version: f32e41d850f51448bd6c588ead9c7d6455733f3c - 44
Odysseus Support: yes
Usage: futurerestore [OPTIONS] IPSW
Allows restoring nonmatching iOS/Sep/Baseband

-t, --apticket PATH       Apticket used for restoring
-b, --baseband PATH       Baseband to be flashed
-p, --baseband-manifest PATH   Buildmanifest for requesting baseband ticket
-s, --sep PATH       Sep to be flashed
-m, --sep-manifest PATH   Buildmanifest for requesting sep ticket
-w, --wait           keep rebooting until nonce matches APTicket
-u, --update           update instead of erase install
    --latest-sep       use latest signed sep instead of manually specifying one(may cause bad restore)
    --latest-baseband       use latest signed baseband instead of manually specifying one(may cause bad restore)
    --use-pwndfu       use this for restoring devices with odysseus method. Device needs to be in kDFU mode already
    --just-boot="-v"       use this to tethered boot the device from kDFU mode. You can optionally set bootargs
    --no-baseband       skip checks and don't flash baseband.
                          WARNING: only use this for device without baseband (eg iPod or some wifi only iPads)

選擇咱們須要的--latest baseband--use-pwndfu以後,輸入-t來指定上文保存好的shsh2,而後就是輸入下載好的ipsw鏡像的路徑便可。


$ ./futurerestore_macos --latest-baseband --use-pwndfu -t /Users/roysue/Downloads/tsschecker-latest/4B5E0EC3CB_iPhone4s_A1431/323700573131_iPhone4,1_6.1.3-10B329_2e0356a7d9ffd962ebc433f58ce944aa61aea88c.shsh2 /Users/roysue/Downloads/iPhone4,1_6.1.3_10B329_Restore.ipsw

回車以後即會出現一大堆命令行,注意會出現WARNING和ERRNO等,可是並不影響刷機的過程。

這時候futurerestore會實施shsh2文件的重放(replay attack),模擬本地與服務器的交互流程,讓本地「覺得」獲得了蘋果服務器的官方驗證,這就是經過重放shsh2來實施的。而後剩下的恢復ipsw鏡像的流程,就是普通的恢復流程了。

大概二十分鐘左右,手機就恢復好了,進入iOS 6.1.3系統,經測試,能夠正常激活使用,與原生沒有任何區別。使用p0sixspwn進行越獄後,又能夠重複上面的流程,刷入任何保存了shsh2的系統了。

另外,在iOS 6.1.3上進行系統更新時,收到的OTA更新包是iOS 8.4.1,這也驗證了上文的說法。請見下圖。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

固然,iOS 6.1.3iOS 8.4.1都是能夠完美越獄的,因此,讀者有了iPhone 4s,就等於擁有了三個能夠越獄的系統,用來學習是徹底足夠了。

futurerestore並非對於全部機型的全部狀況都適用,好比說上文針對的就是32位的可越獄機型、而且保存了shsh2的狀況才適用。適用降級的型號和狀況仍是比較複雜的,讀者能夠閱讀項目官網得到詳細的介紹。

可是目前,也就是在咱們目前的狀況下,實現iOS 九、六、8三系統漫遊,是毫無壓力的。

iOS全版本越獄;一部4和一部4s,實現iOS 六、七、八、9任意漫遊

iOS 六、7的越獄就不說了,網上資料多如牛毛;

iPhone 4的最新系統是iOS 7.1.2,能夠用盤古越獄進行完美越獄。

另外,iPhone 4的Bootroom是能夠破解的,能夠進行內核調試,具體能夠參考這篇文章1這篇文章2這篇文章3

iOS 十、九、8越獄都是最近放出的(一年以內),如今介紹其流程

iOS 10的yalu越獄、iOS 9的Phoenix和iOS 8的EtasonJB,這三款越獄的共同點,就是都沒能找到代碼簽名(code sign)的漏洞,只能使用Cydia Impactor手動簽名後信任證書進行安裝。另外就是yalu越獄只針對64位設備,另外兩款則只針對32位設備。

如今以典型的Phoenix越獄爲例,介紹其流程:

爲何一遍又一遍地說iPhone 4s呢,由於首先4s的最新版本iOS 9.3.5越獄是最新的,17年8月份纔剛剛放出來;其次,iOS 9.3.5是4s支持的最後一個版本,4s與iOS 10無緣;也就是說,無論手上的4s怎麼折騰,系統如何損壞,它總能升級到iOS 9.3.5這個能夠越獄的版本,免去讀者的後顧之憂。

並且32位系統更加適合入門,比64位系統對新手友好不少。

有關iPhone 4s的iOS 9.3.5版本越獄,江湖上還有一段軼事,樹人哥(twitter@i0n1c)也一直要出這一版越獄,還搞了一出kickstarter衆籌這個版本的越獄,目標金額高達111,111歐元,摺合人民幣接近百萬了。然而不到半個月,越獄就被Siguza和tihmstar免費放出來了,被啪啪啪打臉。

網站上已經寫明瞭完整的越獄流程,請見下圖。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

同時聲明,可能會失敗屢次,多試幾回就好。這版越獄也並非完美越獄(Semi-untethered),徹底關機重啓後,須要從新越獄才能回到越獄狀態。跟盤古的越獄同樣的。這種方式其實有利有弊,對筆者來講其實利大於弊,能夠在越獄與正版之間隨意切換,很是方便作研究。

按照官網指示,先下載用來越獄的IPA文件,再下載Impactor,選擇Mac OS X平臺,而後安裝。首先驗證下載的IPA是否是原封正版:


$shasum -a 256 Phoenix3.ipa
616ef9da4796ae7d490fb7b0e31cd85bb48e2732d2436c7710e79716e2b80e61 Phoenix3.ipa

結果正確,與官網提供的摘要相同。

Impactor的安裝過程再也不詳述,與通常APP無異。接下來將iPhone 4s鏈接到Mac,若是是虛擬機還須要將USB映射到虛擬機的USB裏面,黑蘋果則不用。USB鏈接成功後打開Impactor,該款應用會直接顯示鏈接到的iPhone的ID,以下圖所示。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

接下來調整好Finder窗口,將剛剛下載的IPA文件,鼠標單擊後拖拽到Impactor的界面上去,鬆開。而後會被要求輸入你的Apple ID和密碼,ID則是普通的郵箱地址ID;密碼不是普通密碼,而是專門用來爲App進行簽名的APP-SPECIFIC PASSWORDS,在AppleID頁面的Security欄目下生成和獲取,通常爲zkxt-svre-beay-edzm形式一串字符串。輸入無誤以後Impactor開始工做,若是不出意外,Impactor總會有各類問題。好比下圖3.1.2c的這個lockdown問題,筆者就是經過從新拔插手機,在手機上從新點擊「信任電腦」,在電腦上從新點擊「容許訪問手機信息」來解決的。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

下圖3.1.2d則是另一個問題,顯示是權限問題,個人AppleID沒有Network Extensions的權限,所以沒法簽名。其實根本不是這樣,在我重啓和拔插了數遍以後,能夠正常簽名。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

而後就安裝成功了。

接下來在設置→通用→設備管理→開發商應用,選擇信任剛剛用來簽名的證書。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

而後就能夠打開這款App了。點擊Prepare For Jailbreak,而後Accept,而後Begin Installation,而後Use Provided Offsets,iPhone 4s的偏移已經包括在裏面了,因此直接用內置的就好。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

事實證實該款越獄並非很穩定,筆者重啓了大概兩次,才越獄成功,Cydia最終出如今桌面上。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

另外提醒你們,一旦關機或者重啓以後,要從新越獄噢。

另外,你們能夠查看本書的4.1章節,只要是4s均可以降級到iOS 6.1.3iOS 8.4.1這兩個系統,然而這兩個系統都是能夠完美越獄的,因此只要擁有了4s,就擁有了三個系統,對於學習和研究是足夠了。

iPhone 5s iOS 10.2的越獄流程

本次用來實驗的機型是A1530 iPhone 5s,系統版本爲iOS 10.2(14C92)。

首先下載已經編譯好的IPA,由於這種方法是最簡單的。


$ git clone https://github.com/GeoSn0w/Yalu-Jailbreak-iOS-10.2.git

iPhone鏈接到Mac上,打開Yalu-Jailbreak-iOS-10.2/IPA Build文件夾,將其中ipa文件跟上一章拖到Cydia Impactor上,放開以後輸入帳號,和App密碼,流程與上文同樣。

在手機上信任開發者以後,便可打開App了。

偏執的iOS逆向研究員:收集全版本的macOSiOS+越獄+內核調試

這款App在Luca的原裝Yalu基礎上作了加強,增長了開啓Mobile Substrate按鈕,而且從新設計了界面UI,寓意蘋果專治的統治。

點擊Jailbreak Now便可開始越獄!通常狀況下,一兩次以內能夠越獄成功,重啓以後Cydia就會出如今桌面上。

總結

要說總結,其實也沒啥好總結的,內容都在上面了…那就提早祝你們新年快樂吧!

相關文章
相關標籤/搜索