扣丁書屋

手把手教你搭建完美的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界面,或是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】獲取本文相關下載鏈接、資料等。


https://mp.weixin.qq.com/s/u1GP39UzSB2_rqgdJT6Qrg

最多閱讀

簡化Android的UI開發 2年以前  |  515086次閱讀
Android 深色模式適配原理分析 1年以前  |  26372次閱讀
Android 樣式系統 | 主題背景覆蓋 1年以前  |  7927次閱讀
Android Studio 生成so文件 及調用 1年以前  |  5539次閱讀
30分鐘搭建一個android的私有Maven倉庫 3年以前  |  4723次閱讀
Android設計與開發工作流 2年以前  |  4390次閱讀
Google Enjarify:可代替dex2jar的dex反編譯 3年以前  |  4372次閱讀
Android多渠道打包工具:apptools 3年以前  |  4010次閱讀
移動端常見崩潰指標 1年以前  |  3928次閱讀
Google Java編程風格規范(中文版) 3年以前  |  3921次閱讀
Android-模塊化-面向接口編程 1年以前  |  3832次閱讀
Android內存異常機制(用戶空間)_NE 1年以前  |  3789次閱讀
Android UI基本技術點 3年以前  |  3777次閱讀
Android死鎖初探 1年以前  |  3717次閱讀

手機掃碼閱讀
18禁止午夜福利体验区,人与动人物xxxx毛片人与狍,色男人窝网站聚色窝
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>