紮根你的Android裝置可以讓你訪問更多種類的應用程式和更深入的Android系統。但有些應用程式,比如谷歌的Android Pay,根本無法在根裝置上執行。
Google使用一種叫做SafetyNet的東西來檢測你的裝置是否有根目錄,並阻止對這些功能的訪問。谷歌也不是唯一的一家——很多第三方應用程式也無法在安卓裝置上執行,儘管它們可能會透過其他方式檢查root的存在。
相關報道:厭倦了信用卡被盜?使用Apple Pay或Android Pay
Android裝置提供了一個“safetynetapi”,它是安裝在Google認可的Android裝置上的googleplay服務層的一部分。據Google稱,這個API“提供對Google服務的訪問,幫助您評估Android裝置的健康和安全”。如果你是Android開發者,你可以在應用程式中呼叫這個API來檢查你執行的裝置是否被篡改。
此SafetyNet API旨在檢查裝置是否已被篡改,例如,是否已被使用者根目錄、是否正在執行自定義ROM或是否已感染低階惡意軟體。
安裝了谷歌Play Store和其他應用程式的裝置必須透過谷歌Android“相容性測試套件”。根一個裝置或安裝一個自定義ROM防止裝置是“CTS相容”。這就是safetynetapi如何判斷您是否是根使用者——它只檢查CTS相容性。同樣地,如果你得到一個從未與谷歌應用程式一起提供的安卓裝置——比如那些從中國工廠直接發貨的價值20美元的平板電腦中的一款——它根本不會被認為是“CTS相容”的,即使你還沒有把它紮根。
為了獲得這些資訊,googleplay服務下載了一個名為“snet”的程式,並在你裝置的後臺執行它。這個程式從你的裝置收集資料,並定期傳送給谷歌。谷歌將這些資訊用於各種目的,從瞭解更廣泛的Android生態系統到確定你的裝置軟體是否被篡改。Google沒有解釋snet到底在尋找什麼,但是snet很可能會檢查您的系統分割槽是否已經從出廠狀態修改過。
您可以透過下載像SafetyNet Helper Sample或SafetyNet Playground這樣的應用程式來檢查裝置的SafetyNet狀態。該應用程式將詢問谷歌的SafetyNet服務有關你的裝置狀態,並告訴你它從谷歌伺服器得到的響應。
有關更多技術細節,請閱讀由軟體安全公司Cigital的技術策略師johnkozyrakis撰寫的部落格文章。他深入研究了SafetyNet,並進一步解釋了它的工作原理。
SafetyNet對於應用程式開發人員是可選的,應用程式開發人員可以選擇是否使用它。只有當應用程式的開發者不希望它在根裝置上工作時,SafetyNet才會阻止它工作。
大多數應用程式根本不會檢查SafetyNet API。即使是檢查了safetynetapi的應用程式,比如上面的測試應用程式,如果收到錯誤的響應,也不會停止工作。應用程式的開發人員必須檢查SafetyNet API,並使應用程式拒絕執行,如果它知道你的裝置的軟體已被修改。谷歌自己的Android支付應用就是一個很好的例子。
谷歌的Android支付移動支付解決方案在植根的Android裝置上根本不起作用。試著啟動它,你會看到一條訊息說“Android Pay不能使用。谷歌無法驗證您的裝置或其上執行的軟體是否與Android相容。”
當然,這不僅僅是關於根的問題——執行一個定製的ROM也會讓你違反這個要求。如果你使用的是裝置沒有附帶的定製ROM,safetynetapi會聲稱它與Android不相容。
相關報道:針對Root的案例:為什麼Android裝置沒有紮根
記住,這不僅僅是檢測根。如果你的裝置被一些系統級惡意軟體感染,這些惡意軟體能夠監視Android Pay和其他應用程式,SafetyNet API也會阻止Android Pay正常執行,這是一件好事。
紮根你的裝置打破了Android的正常安全模式。Android Pay通常使用Android的沙盒功能來保護你的支付資料,但應用程式可以在根裝置上突破沙盒。谷歌無法知道Android Pay在某個特定裝置上的安全性,如果該裝置是根裝置或者執行一個未知的自定義ROM,那麼他們會阻止它。一位Android支付工程師在XDA開發者論壇上解釋了這個問題,如果你想了解更多的話。
SafetyNet只是應用程式檢查是否在根裝置上執行的一種方法。例如,三星裝置包括一個名為KNOX的安全系統。如果你根你的裝置,諾克斯安全是絆倒。三星自己的移動支付應用程式Samsung Pay將拒絕在根裝置上執行。三星正在為此使用KNOX,但它也可以使用SafetyNet。
類似地,很多第三方應用程式會阻止你使用它們,而且並不是所有的應用程式都使用SafetyNet。他們可能只是檢查裝置上是否存在已知的根應用程式和程序。
很難找到一個最新的應用程式列表,這些應用程式在裝置根目錄下不工作。但是,root斗篷提供了幾個列表。這些名單可能已經過時了,但它們是我們能找到的最好的。許多是銀行和其他移動錢包應用程式,它們阻止根**上的訪問,試圖保護你的銀行資訊不被其他應用程式捕獲。用於影片流服務的應用程式也可能拒絕在根裝置上執行,作為一種DRM措施,試圖阻止您錄製受保護的影片流。
谷歌正在和SafetyNet玩一個貓捉老鼠的遊戲,不斷更新它,試圖在人們繞過它之前保持領先。例如,Android開發者Chainfire建立了一種新方法,即“無系統根(systemlessroot)”,它可以在不修改系統分割槽的情況下為Android裝置建立根。SafetyNet最初並沒有檢測到這樣的裝置被篡改,Android Pay也起了作用——但SafetyNet最終被更新以檢測這種新的根方法。這意味著Android Pay不再與無系統root一起工作。
相關:忘記閃爍的rom:使用Xposed框架調整你的Android
根據應用程式檢查根訪問許可權的方式,您可以欺騙它。例如,據報道,有一些方法可以在不破壞KNOX安全性的情況下為一些三星裝置設定根目錄,從而允許您繼續使用Samsung Pay。
對於只檢查系統上根應用程式的應用程式,有一個名為root斗篷的Xposed框架模組,據說它允許你欺騙它們,使它們無論如何都能工作。這適用於DirecTV GenieGo、Best Buy CinemaNow和Flixster的電影等應用程式,這些應用程式通常不適用於根裝置。然而,如果這些應用程式被更新為使用谷歌的SafetyNet,它們就不會這麼容易被欺騙。
大多數應用程式將繼續正常工作,一旦你根你的裝置。**支付應用是個大例外,其他一些銀行和金融應用也是如此。付費影片流服務有時也會試圖阻止你觀看他們的影片。
如果您需要的應用程式在您的根裝置上無法執行,您可以隨時取消根裝置以使用它。應用程式應該在你將裝置恢復到安全的出廠狀態後工作。
圖片來源:Danny Choo在Flickr上
... 但它正受到作業系統本身內建功能的威脅。它被稱為SafetyNet,它使應用程式能夠檢查裝置是否已解鎖或根目錄,然後阻止它們。 ...
...,所以使用Widevine的應用程式不能提供給未經谷歌認證的Android裝置也就不足為奇了。然而,即使是那些**附帶了未鎖定載入程式的使用者也受到了影響。 ...
... 同樣,你也會失去應用程式的相容性。Android有一個名為SafetyNet的特性,它決定了一個裝置是已經被根目錄下的還是它的引導載入程式已經被解鎖。開發者可以使用SafetyNet並決定是否阻止他們的應用程式在他們認為不安全的裝置...
... 如果你一直想知道如何阻止Android上的網站,我們將向你展示你需要知道的。 ...
...hone上的“安全飛地”也有類似之處。三星的Galaxy**和其他Android**經常使用ARM的TrustZone技術。下面是它們如何幫助保護你的**。 基礎知識 這些晶片基本上是你**裡的獨立小電腦。他們有不同的處理器和記憶體,他們執行自己的微...
...**擁有高階功能(或者在某些情況下,基本功能),支援Android幾乎是必須的。但是時代變了。谷歌已經把它的移動作業系統做得如此之好,以至於尋根的麻煩遠遠超過了它的價值。 什麼是生根(rooting)? 由於Android基於Linux並...
曾幾何時,你必須密切關注你的Android**,以確保電池不會過早耗盡。手動切換連線,不斷調整亮度等基本上都是過去的事情了,但你仍然可以做的事情,以最大限度地延長**的電池壽命。 相關報道:Android的“打瞌睡”如何提高...
...方式修改/system分割槽。 作為提高安全性的一部分,Google SafetyNet等工具已經到位,以確保Android Pay等服務的安全,這使得使用者不得不在root訪問和有價值的服務之間進行選擇。真是個倒黴蛋。 相關:忘記閃爍的rom:使用Xposed框...