手把手教你搭建完美的 Android 搞機 - 逆向環境

前段時間我把日常用機從華爲 Mate20 Pro 轉向了小米 10 Pro,所以... 我又可以開始搞機了。那麼既然我自己手機要搞一搞,不如順便把這篇被催更已久了的文章給寫了吧~ 正好除了一直催更我的那些想搞 Android 逆向的朋友以外,還有很多想換手機的朋友問我小米 10 Pro 怎麼搞、能不能搞,這一篇文章就完事了,嘿嘿。

這篇文章分爲三個部分,第一部分是給你介紹一下在搞機過程中你會經常看到的名詞,第二部分是 Magisk(ROOT)+Xposed 的環境搭建過程,第三部分是偏日常向的——如何使用高權限來強化你的使用體驗。沒有體驗過高權限狀態下的 Android 或者是隻對日常使用相關內容感興趣的朋友可以直接翻到後面看看。

廢話不多說,我們直接開始吧。

先了解一下基本名詞

在準備環境前,先來了解一些你至少要知道是個啥的東西。這部分建議看完,要不然你在碰到一些奇怪的問題時可能會懵逼。

Bootloader 鎖

Bootloader 字面意思很明顯,就是個引導系統啓動的引導程序,那這個鎖是什麼呢?鎖其實是廠商爲了普通用戶的安全考慮而設下的一個門檻(比如被奸商塞了後門再賣、被惡意誘導進行一些高危操作等),它會在 Bootloader 引導啓動時檢測即將被啓動的東西(recovery.img / boot.img)的簽名是否是廠商的,如果不是的話就拒絕啓動。

也就是說,你不解了這個鎖,是無法進行刷機操作的。

提示:如果是日常用機,並且你擔心出現安全問題的話,完全可以在準備完環境之後再把 BL 鎖給鎖上,只要你不怕出現突然需要改東西之類的情況或者後面直接就解不了 BL 鎖的情況(此處點名批評華爲)。

Recovery

Recovery 相當於是以前那種 Windows PE U 盤,我們能通過它像使用 Ghost 進行重裝系統(直接恢復鏡像到指定分區)一樣刷機。

因爲是讀取閃存(以前的 SD 卡)中的刷機包進行刷機的,所以在這裏進行刷機操作通常又被稱爲 “卡刷”。

通常每個廠商都會自己搞一套 Recovery,而部分廠商會因爲自己的用戶羣體中大多是不懂技術的普通用戶,而將自己的 Recovery 做成一個必須要依靠自家應用配合的傻瓜式工具,這種情況你多半是不能使用它刷一些第三方的東西進去的,只能替換掉。

第三方 Recovery(如 TWRP)通常功能特別多,能做到很多原廠 Recovery 做不到的事情,加上前面提到的問題... 所以其實我們搞機前直接替換掉原廠的就好了。

手機的 OTA 功能也是通過 Recovery 進行安裝更新包的,有些廠商的原廠系統更新包會有一些騷操作,所以如果你用了第三方 Recovery 之後無法正常更新系統的話,可以刷回原廠 Recovery 再更新(反正環境搭好之後你就基本不用進這裏了)。

Fastboot

Fastboot 是一個與 Bootloader 進行通信的工具,它與 ADB 類似,但比 ADB 更底層。它相當於一些主板上較爲高級的 UEFI(可以理解成比操作系統更底層的操作系統),我們也能通過它來進行刷機。

因爲 Fastboot 是需要連接電腦,讓電腦提供刷機包的,所以在這裏進行刷機操作通常又被稱爲 “線刷”。

它可以被用來替換 Recovery,所以如果你把 Recovery 玩掛了也沒關係,只要你能進 Fastboot 就還是可以救回來。如果連 Fastboot 都掛了的話,你就只能指望像高通 9008 模式之類的東西了。而如果你的手機沒有這種東西的話... 那就只能送回廠重刷閃存,或者... 當磚頭砸核桃用了。

高通 9008 模式

9008 模式學名叫 Qualcomm HS-USB QDLoader 9008,是一個 SoC 級的調試接口。即使你的系統掛了、Recovery 和 Fastboot 也都掛了,你也還是可以通過它來將手機恢復到正常狀態;即使你沒有解 BL 鎖,你也能把 System 分區換個底朝天。

但是這種 SoC 級的調試接口屬於大殺器,不到萬不得已時儘量不要使用,以免手賤。

OTA

OTA 沒啥好介紹的,就是更新系統用的。

前面講 Recovery 的時候提到了一個小坑點,這裏再說個第三方 ROM 的小坑點吧。有些第三方 ROM 是所謂的 “官改”,也就是那種基於廠商原廠系統進行魔改的系統,這些 ROM 中有些會告訴你無法進行 OTA 更新,原因其實就是廠商做了簽名校驗,改過的系統過不了校驗自然只能每次都手動更新(注意只是有些)。

System 分區

字面意思,系統分區,裏面包含了操作系統本身(官方的說法是 Android 框架)和系統應用。也就是說,在這裏面跟系統一起運行的,都是具有高權限的。

像 Magisk、Xposed 這種東西,都是需要裝到 System 分區中去的。

System 分區在解 BL 鎖獲取高權限前無法進行操作,同樣也是爲了安全考慮。

這裏再擴展一下,有些手機的系統應用特別多,而且正常無法刪除,這種情況下別人通常會告訴你獲取 ROOT 權限後再進行卸載。這其實就是前面講的權限問題,用戶的正常權限比系統要低,所以自然就無法進行卸載操作了。

A/B 分區

A/B 分區會有兩份系統和引導程序的分區,一份給你使用,一份作爲備用。這個功能主要是爲了 OTA 更新時能做到在手機開機狀態下後臺安裝系統更新,使用戶只需要重啓一下手機就能直接進入新版本的系統,可以極大地提升用戶體驗。

同時,A/B 分區還可以防止出現用戶誤操作搞掛系統的情況,因爲即使搞掛了也還是有另一個分區的系統可以使用,穩定性更高。

但是這玩意對搞機來說就有點煩人了,有些使用了 A/B 分區的手機(比如 essential phone),你在準備環境或刷 ROM 時需要對兩個分區都操作一次,否則就會出現 OTA 一下環境全沒了的情況。

全盤加密 / 加密分區

全盤加密是一個能讓用戶在手機遺失的情況下不泄露數據的功能,現在高版本的 Android 都是默認開啓了全盤加密的。

如果你已經進入過一次系統並設置了鎖屏密碼,那麼你可能會在後續進入 Recovery 時看到一個 “分區已加密,請輸入密碼” 之類的提示,這時候你只需要輸入鎖屏密碼就可以解鎖了。

ADB

ADB 全名叫 Android 調試橋,是一個系統級的命令行工具,需要進入系統後才能使用。

ADB 的功能非常多,像常用的複製文件、重啓 / 關機、打開手機的 shell、查看 activity、安裝 / 卸載 app、開啓 / 關閉設備管理員功能、截屏、錄屏、模擬點擊 / 滑動等操作都可以通過 ADB 來實現。

一般來說,如果是日常用機,並且沒有特殊需求的話,建議平時將 ADB 關閉掉,以免出現插了什麼奇怪的設備導致設備被黑掉之類的情況。

Xposed

Xposed 是一個 Hook 框架,簡單來說就是可以在不修改 APP 本身的情況下影響程序的運行效果。它有一個模塊的概念,你可以通過 Xposed 實現一些魔改,達到各種高度定製化和一些 APP 原本無法做到的效果。

Xposed 原作者 Rovo89 目前已經棄坑,不過沒關係,開源社區中繼承原版 Xposed 大任的各種框架目前可以說是百花齊放的狀態,像比較知名的 EdXposed、XPatch、太極(太極本身是閉源的,但它的 Hook 框架 Epic 是開源的)之類的都可以選擇使用。

下面提供一張各 Xposed 框架對比列表以供參考(圖片來源自:https://www.v2ex.com/t/646108,原作者不明):

Magisk

Magisk 是一個類似於 Xposed 但功能和實現方式與 Xposed 截然不同的框架,它自帶 ROOT 功能,並且可以讓 APP 檢測不了你的手機是否有被魔改。

碰到有檢測 ROOT、檢測系統完整性、檢測是否通過 Google 的 SafetyNet 認證的情況時,只需要使用 Magisk 的 Hide 功能就能輕鬆將你手機已被魔改的事實隱藏起來,對某些銀行類 APP 有奇效。

Magisk 與 Xposed 一樣,也有模塊的概念,你也可以通過它實現一些魔改,達到各種高度定製化和原本無法做到的效果。

SafetyNet

SafetyNet 是 Google 搞的一個用來檢測設備是否 ROOT 過,設備運行環境是否安全等東西的功能,或者說... 服務?在 Google Play 的設置中有個 Play 保護機制認證,這東西有一部分檢測就是依靠 SafetyNet 來做的。

有些第三方 APP 也會通過 SafetyNet 來做到增強反作弊、反盜版功能的效果,雖然其實沒什麼卵用... 像 Netflix、Pokémon Go 如果檢測到 SafetyNet 不通過,就直接不讓你用了;Google Play 如果檢測到 SafetyNet 不通過,部分 APP 就不讓你搜到和下載了(比如 Netflix)。

雙清 / 三清 / 四清

雙清就是清除 Data、Cache 兩個分區,這個操作會導致你在系統刷好後安裝的普通 APP 通通被清空,但並不會清空 sdcard 中的數據(也就是你日常存文件的那個目錄),相當於恢復出廠設置。

三清就是在雙清的基礎上把 Dalvik Cache 也給清了,某些特定場景下可以解決程序崩潰的問題。

四清通常指的是在三清的基礎上連 System 分區也給清了,這會導致你的系統徹底消失,類似於在電腦上把系統盤格式化了一樣,通常並不需要進行這個操作。

有時候你刷了一些不兼容的包到手機上時,可能會出現開機時一直卡在 LOGO 界面,或是 LOGO 動畫過了之後黑屏一下又一直重複前面的動畫的情況。

這其實是因爲無法正常引導進入系統導致的,這種情況通常我們可以通過 Recovery 刷入卸載包或手動刪除指定文件的方式來解決。

實際碰到這種情況時,得具體問題具體分析,沒有通用的解決辦法。

環境搭建

瞭解完基本的名詞之後,我們就可以開始搭建搞機環境了~

解 BL 鎖

首先當然是解 BL 鎖了,要不然我們什麼都做不了。這東西的話,各廠商有各廠商的解鎖方式,自行搜索相關資料或者詢問官方客服即可。(華爲之類官方不提供解鎖方式並且把路都給你封死的無解)

解鎖完之後一般會自動重啓,順手初始化一下系統設置然後開一下開發者選項和它裏面的 ADB 開關吧。

打開開發者選項

通常是在系統信息中多次點擊系統版本後就可以打開了,如果沒打開的話可以自行搜索 手機型號或系統(UI)名 所對應的開啓方式。

打開 ADB

在開發者選項中找到調試相關設置,打開 ADB 功能(USB 調試)和 ADB 安裝應用選項(USB 安裝)。

更換 Recovery

找到對應機型的 TWRP(一個非常知名的開源 Recovery),下載好之後把手機連上電腦,然後進入 Fastboot 模式。

由於我們剛剛已經打開了 ADB,所以可以直接在命令行中輸入 adb reboot bootloader 直接進入 Fastboot 模式,就不用關機、按音量鍵 + 電源鍵之類的麻煩操作了。

提示:輸入後命令行卡在那很正常,稍等幾秒手機重啓後就會恢復了。

進入 Fastboot 模式後,輸入fastboot flash recovery example.img就可以刷入剛剛下好的 TWRP 包了。(注意自行更改文件名)

提示:刷完之後不會自動重啓,看命令行提示 Finished 了就行。

接着我們需要進入 Recovery 中,與前面進入 Fastboot 時類似,我們同樣可以通過命令直接進入,輸入fastboot reboot recovery即可 。

進入 Recovery 之後,如果不出意外的話,你應該會看到這樣的一個界面:

正常進入 TWRP

提示:在手機連着電腦的情況下,TWRP 可以將 sdcard 目錄使用 MTP 模式開放給電腦查看,就和我們在 Android 系統中連接電腦時選擇了” 傳輸文件 “選項時一樣。此功能一般默認開啓,所以只要你沒拔掉線,應該就能在電腦上看到手機的文件了。

在進入 Recovery 後,可能會出現下面這兩個界面:

這個直接拖動滑塊允許修改即可。

這個是前面說過的全盤加密,直接輸入鎖屏密碼即可。

ROOT(Magisk)

保持着上一步的狀態,在 Magisk 的官方 Github 倉庫中下載最新版本編譯好的包,然後把電腦上下好的包傳到手機的 sdcard 目錄中。

接着,進入 TWRP 的安裝(install)頁面,選中剛剛準備好的 Magisk 的包,刷入它,然後重啓。

⚠多圖警告⚠

重啓進入系統後,我們應該會看到一個叫 Magisk Manager 的 APP(如果沒有的話,可以自行在 Magisk 的官方 Github 倉庫中下載並安裝)。這個 APP 是用來管理 Magisk 的,裏面可以進行 ROOT 授權、SafetyNet 檢測、隱藏 Magisk 和 ROOT、安裝 / 管理 Magisk 模塊(不同於 Xposed 模塊)之類的操作。

打開 Magisk Manager 後如果看到 “Magisk 已是最新版本”、“已安裝:xxxx” 就說明你的 Magisk 已經安裝成功了。

Xposed(EdXposed)

由於 Xposed 作者 Rovo89 已經棄坑,後續的新版本 Android 都只有第三方的 Xposed 了,目前最接近原版 Xposed 的第三方版本是 EdXposed,當然也有一些別的免解 BL 鎖就能用的通過注入或容器方式實現的 Xposed 框架。但是既然都解鎖了,爲什麼要用那些 “閹割版” 呢?

在 EdXposed 的官方 Github 倉庫中的說明裏可以看到,在安裝前需要先裝一個名爲 Riru-Core 的東西。

這個 Riru-Core 是一個 Magisk 模塊,所以我們直接打開 Magisk Manager APP,搜索 Riru,找到作者名爲 Rikka 的 Riru-Core 並安裝。

然後就是 EdXposed 本身了,EdXposed 同樣也被做成了 Magisk 模塊,所以我們與前面的操作一樣,搜索 EdXposed 並安裝就可以了。

這裏需要注意的是,EdXposed 是有多個版本的,分別是使用了 YAHFA 的版本和 SandHook 的版本,兩個版本功能上沒有差異,只是換了 Hook 框架而已,可以自行選擇。不會選的話就默認 SandHook 吧,用不了再卸了換另一個。

安裝好模塊後,我們還需要安裝一個叫 EdXposed Manager 的東西,這個東西和 Magisk Manager 相似,是用來管理 Xposed 的。

提示:這東西類似於以前的 Xposed Installer,但按 EdXposed 官方 GitHub 倉庫中的說明來看,Xposed Installer 已經停更了,官方推薦使用 EdXposed Manager,所以直接裝它吧。

安裝 EdXposed Manager

還是老樣子,在官方 Github 倉庫中下載好最新版本的 EdXposed Manager,然後一個adb install example.apk直接解決(注意自行改名)。

現在,我們的 Xposed 環境就準備好了,重啓一下手機使 EdXposed 生效吧。

重啓後打開 EdXposed Manager,如果顯示 “EdXposed 框架已激活”,那麼恭喜你,你的 Xposed 已經安裝成功了。

如果你不幸碰上了 EdXposed 已安裝但未激活或是卡 LOGO 的情況,可以去 EdXposed 官方 GitHub 倉庫的 issues 裏搜索一下你的手機型號,或許已經有解決方案了。如果沒有的話,也可以自己新開一個 issue 諮詢一下開發者。

小結

那麼到了這裏,你應該已經擁有正常運行的 Magisk 和 Xposed 了,接下來你就可以利用它們帶來的高權限開始玩一些騷操作了。

使用高權限強化日常使用體驗

小米、一加這類方便解 BL 鎖、操作空間更大的手機的好處在於:你可以用 Magisk、Xposed 等工具輕鬆做到很多原本系統和 APP 不能做的事情。

因此,不管你用的東西原本的設計有多麼反人類(點名批評張小龍的 “剋制” 導致微信沒有進行羣聊分組的問題),你也能用高權限把它給改造得更合理、更方便使用。

下面是一些我日常使用中能大幅提升使用體驗的東西,有興趣的朋友可以瞭解一下。

存儲空間隔離 / 存儲重定向(Magisk)

存儲重定向是個好東西,它能讓所有 APP 都老老實實的,不會在 sdcard 目錄中滿地拉屎,強烈推薦使用!!!

在 Google Play 上直接搜索存儲重定向就可以找到了,安裝好 APP 後還需要在 Magisk Manager 中安裝 Riru-Core 和 Riru 本體,老樣子操作一下就好了。

使用後的效果:

這東西需要注意的就是配置可能會要花點時間,建議將微信圖片目錄之類的都加到模板中,這樣多個 APP 間共享文件時就直接勾上就好了。

記得配置好了備份一下哦,手賤一下全部重設什麼的... 你應該不會想要體驗。

XPrivacyLua(Xposed)

權限控制神器,可以在允許權限的情況下給 APP 返回假數據,避免流氓 APP 不給權限就直接退出。結合存儲重定向還可以有效解決一些統計 SDK 的用戶跟蹤 / 分析導致的隱私 / 廣告問題。

釘釘助手(Xposed)

這個也是個好東西,虛擬定位打卡什麼的(滑稽),實測管理端後臺檢測不到。不過我現在已經把釘釘扔車機上,搞成自動打卡了,所以手機上也沒必要裝它了。

QQ 淨化(Xposed)

可以隱藏掉手機 QQ 裏像 QQ 看點之類的各種亂七八糟的功能,看着會清爽很多。

QX 模塊(Xposed)

反撤回、防止被戳、快速搜索併發送表情包、轉發語音什麼的,很舒服。(防止被戳可有效解決 “小學生” 一直私聊戳一戳你導致手機一直震的問題)

微 X 模塊(Xposed)

羣聊分組、自動免打擾新羣聊、一鍵羣發公告、朋友圈分組查看、朋友圈關鍵詞屏蔽、反撤回、快速搜索併發送表情包、轉發語音 / 名片、多窗口閱讀文章、首頁加懸浮按鈕一鍵掃碼等各種操作,太舒服了,用了就回不去。(√日常教張小龍做微信)

微信羣消息助手(Xposed)

一個功能沒微 X 那麼豐富,但簡單粗暴效果好的羣聊分組助手。

雲村清潔工(Xposed)

類似於 QQ 淨化,隱藏各種亂七八糟的功能。雖然網易雲音樂的 Google Play 版很乾淨,但有些功能限制不太爽,還是直接上 Xposed 模塊來解決比較方便。

MagiskHide Props Config(Magisk)

用來解決部分手機在開啓了 Magisk Hide 之後仍然無法通過 SafetyNet 的問題。

如果是 ctsProfile 這一項沒有通過,那說明你的 ROM 沒有通過其兼容性測試,一些 beta 版本或者國內廠商的 ROM 可能出現這種問題。這時我們下載使用 MagiskHide Props Config 這個模塊往往能夠解決問題。

Location Report Enabler(Magisk)

用來開啓 Google 的一些在中國大陸被屏蔽掉的服務,比如位置記錄、Google 時間線等。

相關資源

由於存在更新的可能性,所以我決定將這些東西放到自動回覆中,你可以發送消息【搞機環境搭建】到公衆號【NightTeam】獲取本文相關下載鏈接、資料等。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/u1GP39UzSB2_rqgdJT6Qrg