您現在的位置是:首頁 > 影視首頁影視

安卓實現安卓-光速虛擬機器技術內幕

由 光速虛擬機器 發表于 影視2021-08-28
簡介背景光速虛擬機器是基於安卓系統和ARM處理器架構實現的一套虛擬化技術,在安卓系統的使用者態空間無需特殊許可權實現了一套完整的安卓核心和硬體抽象層,能夠在安卓APP內部執行另外一個安卓系統,虛擬機器內部的APP和遊戲執行效能能夠接近真機的執行

光速虛擬機器怎麼使用

背景

安卓實現安卓-光速虛擬機器技術內幕

光速虛擬機器是基於安卓系統和ARM處理器架構實現的一套虛擬化技術,在安卓系統的使用者態空間無需特殊許可權實現了一套完整的安卓核心和硬體抽象層,能夠在安卓APP內部執行另外一個安卓系統,虛擬機器內部的APP和遊戲執行效能能夠接近真機的執行效能和相容性。光速虛擬機器也可以認為是一種安卓系統上的庫作業系統(libos)。從行業的情況來看,微軟和Google分別在不同系統上實現過類似的方案,微軟DrawBridge是在Windows上實現Windows,以及其後續發展出來的WSL是Windows上實現linux,Google的gVisor則是linux上實現linux。光速虛擬機器是透過安卓來實現安卓。光速虛擬機器是市面上第一家在手機上實現完整安卓虛擬化的產品。

選擇光速虛擬機器作為研發方向主要考慮瞭如下三種場景:

1) 遊戲場景

使用者在玩遊戲的時候需要多開遊戲,或者息屏以後仍然希望遊戲能夠執行。

由於受到眾所周知的原因,華為手機不能安裝GooglePlay,外服遊戲的使用者也會遇到很大障礙。光速虛擬機器內部可以預裝GooglePlay和內建外服遊戲的加速能力。

2) 安全場景

安全場景分為普通使用者場景和企業場景。

普通使用者在執行一些來路不明的APP的時候,擔心隱私洩露、流氓廣告的風險。而光速虛擬機器將真機系統和虛擬系統實現了隔離,確保使用者的資訊不會被這些APP收集,也不會受到流氓廣告的侵擾。

企業場景主要是安全管控能力,在移動辦公領域,對企業辦公APP的管控和防資料洩露,通常使用的方案是重打包或者沙箱方案(比如VirtualAPP),這些方案會存在相容性、部署重、安全管控能力不足的問題。光速虛擬機器實現了核心和硬體抽象層,具備可證明的安全性,能夠實現對企業APP進行完整安全管控,並且是非侵入式方案,原理上能夠達到更好的相容性和更完整的安全性。

3) 相容性場景

一些老的應用和遊戲對新版本的安卓系統更新不及時,比如安卓10,或者即將升級的安卓11。光速虛擬機器內部可以執行安卓4。4-安卓10系統和未來更高版本的安卓系統,目前外發的版本支援安卓7。1。2。這樣能保證一些老的應用和遊戲能夠在新的安卓系統上執行起來。有點類似Windows作業系統的相容模式。

相關技術介紹

團隊分析了目前已經有的使用者態虛擬化技術,挑選最具代表微軟的Drawbridge&WSL和Google的gVisor,以及國內廠商VMOS來進行介紹。

1)Drawbridge&WSL介紹

Drawbridge技術架構圖:

安卓實現安卓-光速虛擬機器技術內幕

安卓實現安卓-光速虛擬機器技術內幕

微軟基於這樣一個背景來做Drawbridge:VM的虛擬化技術效率不高,而傳統的OS虛擬化技術,如Linux Container技術,安全性又不足,所以Drawbridge選擇了一條兩者兼顧的道路,把Kernel的記憶體狀態放到了Windows Container中,使用者間的隔離更徹底,而各個Container之間依然共享一部分資源,所以相較VM虛擬化效率要高。

Drawbridge繼續發展成為了支援linux的WSL。WSL則是透過Windows核心驅動來是實現linux核心的完整功能,不過技術原理上和Drawbridge有相關性。

安卓實現安卓-光速虛擬機器技術內幕

Google gVisor介紹

Google gVisor技術架構圖:

安卓實現安卓-光速虛擬機器技術內幕

gVisor是用Go編寫的使用者空間核心,它實現了Linux核心系統呼叫的很大一部分。它包括一個稱為runsc的開放容器標準(OCI)執行時,它在應用程式和主機核心之間提供隔離邊界。 runsc執行時與Docker和Kubernetes整合,使執行沙盒容器變得簡單。

2) VMOS

VMOS採用類似anbox的技術,沒有實現完整的核心功能,而是基於現有安卓系統的核心,修改C庫函式的基礎上在安卓系統上執行另外一個安卓系統,這樣實現的問題就是由於對系統呼叫很難實現完整截獲,會引入一些相容性問題,並且不能根治。

光速虛擬機器技術架構

透過上面的分析我們知道,微軟Drawbridge是在Windows上實現Windows,Google的gVisor則是linux上實現linux。光速虛擬機器則是透過Android來實現Android,我們在安卓使用者態實現了一個完整的安卓核心和安卓硬體抽象層。從工程角度來看,光速虛擬機器比gVisor實現的困難度要大不少,手機終端的多樣性遠大於後臺linux伺服器版本的多樣性,對效能的要求也更加嚴苛。光速虛擬機器除了能在安卓上執行安卓,實現了跨系統的遷移層,具有很好的遷移性,能夠在國產作業系統UOS、Linux、macOS和雲上來執行安卓和linux程式。

安卓實現安卓-光速虛擬機器技術內幕

安卓實現安卓-光速虛擬機器技術內幕

1,完整的安卓核心

安卓核心基於linux核心,多了一些特殊裝置比如binder的實現。光速虛擬機器將真機安卓核心視為一種資源,在其基礎上完整實現了記憶體管理,程序管理,檔案系統和裝置管理等安卓核心功能。對上層提供標準的安卓核心介面。這樣安卓虛擬機器內部執行的安卓系統將不依賴於手機核心的實現,可以實現在安卓5-安卓11上執行任意版本的安卓系統,這意味著可以在安卓5的手機上執行安卓7,或者安卓11。目前光速虛擬機器外發釋出版本主要支援安卓7。

從安全形度來看,相對於沙箱或者加固重打包方案,由於光速虛擬機器是獨立於主機的核心,能夠實現更好的安全性和隔離性。也不會因為主機核心的漏洞導致APP之間的互相穿透行為。

2,完整的硬體抽象層次

光速虛擬機器基於真機系統的安卓資源,實現了一個完整的硬體抽象層包含顯示螢幕、輸入輸出裝置、藍芽等。這樣能對虛擬機器內部的APP使用硬體資源能夠進行很強的管控。甚至可以的對螢幕打盲水印這樣一些特殊安全能力。

3,精簡的安卓系統

光速虛擬機器目前會攜帶一個精簡的安卓系統,目前系統是基於AOSP7。1。2精簡而來,大小在170M左右,外發版本因為普通使用者的一些需求會有200多M,未來比較方便擴充套件到安卓其他版本。

光速虛擬機器實現過程中的主要技術難點:

1) 系統呼叫的相容性

光速虛擬機器核心對自身內部執行的APP是根據linux核心4。14的標準來實現的。

由於各個安卓系統所基於的linux核心版本不一致,各個廠商對核心也有會很多修改,光速虛擬機器對真機核心使用的時候儘可能按照最少使用原則來,儘可能不使用新核心的新特性。這種方式對光速虛擬機器核心實現的難度和複雜度都比較大,卻能得到比較好的相容性。

2) 系統呼叫的完備性

1、基於主作業系統核心來實現300多個系統呼叫,具有非常大的工程難度和工作量。

2、沙箱技術目前面臨的最大問題是系統呼叫的完備性問題,沙箱透過HOOK C庫函式的方式攔截所有系統呼叫,對於一些加固加殼的應用或者遊戲,這些加固的程式碼不透過C庫直接呼叫系統呼叫,對於這些系統呼叫沒有通用的HOOK辦法來實現攔截,需要透過搜尋特徵碼的方式來實現。沙箱技術可以透過seccomp來實現對系統呼叫的攔截(seccomp是linux的一種安全機制,可以設定條件接管應有的所有系統呼叫),但是由於地址隨機化ASLR的原因,沙箱很難區分系統呼叫是來自於C庫還是來自於應用自身的直接呼叫,意味著每一個系統呼叫都需要進出兩次核心,效能開銷很大。光速虛擬機器由於擁有相對完整的核心實現,比較好的解決這個問題,即兼顧效能又能實現系統呼叫監控的完備性。

3) TLS的處理

TLS (Thread Local Storage)是作業系統比較重要的特性,執行緒本地儲存。

本質上虛擬機器是真機上的一個APP,虛擬機器裡面執行的APP包含的程序是真機上的程序。如果虛擬機器程序使用真機的TLS,會導致從虛擬機器進入真機或者從真機回到虛擬機器出現數據混亂的情況。這時就需要程序在虛擬機器內部TLS和真機TLS的切換過程。虛擬機器需要完整實現虛擬機器內部TLS到真機TLS的互相切換過程。

4) 渲染的效能處理

虛擬機器包括安卓模擬器的渲染處理,一般是將虛擬系統內部的OpenGLES渲染指令透過管道的方案發送到視窗程序來完成渲染的處理。由於渲染傳輸的資料非常大,又是跨程序通訊,導致會有比較大的效能損耗,使用者在玩遊戲的過程中會有延遲的感覺。光速虛擬機器的渲染沒有透過管道傳輸到渲染視窗,而是直接穿透虛擬機器直接呼叫真機的渲染介面來完成渲染指令的計算,然後合成到渲染視窗,這樣效能基本接近真機的渲染效能。

5) 執行緒數量的控制

華為手機為了提示EMUI的效能,對單個APP有執行緒數量限制,比如mate8之前的手機有500個執行緒的數量限制,這樣會導致虛擬機器裡面如果開啟多個APP會觸發這個執行緒數量的限制(虛擬機器本質上是一個APP)。為了解決這個問題,虛擬機器採用了執行緒池的方案。在虛擬機器核心裡面建立一個虛擬CPU,虛擬CPU包含了一個真機的執行緒池,虛擬機器裡面的APP建立執行緒的時候,實際上並不對應真機上真正的執行緒,由虛擬機器的虛擬CPU來完成對APP執行緒的排程。

相容性和效能評估

安全虛擬手機在安卓核心基礎上完整模擬了一個新的核心和硬體抽象層,效能、相容性接近真機。

應用相容性:

一個完整的安卓執行環境,技術原理上可以做到跟使用者手機的相容一致。光速虛擬機發布情況來看相容市面上絕大部分應用和遊戲。

手機相容性:

光速虛擬機器支援Android5。1-Android10的手機系統。記憶體方面,需要手機的記憶體大於等於2G

光速虛擬機器在效能方面做了比較多的最佳化工作,實際測試來看,效能方面:

1,主流應用啟動時間相比真機影響<5%

2,主流應用執行記憶體佔用,CPU開銷相比真機影響<5%

3, 主流遊戲效能幀率影響,渲染一幀所花時間跟真機對比影響<5%

光速虛擬機器的進一步應用

移動端安全

安卓實現安卓-光速虛擬機器技術內幕

基於光速虛擬機器引擎能力的安全虛擬手機,提供整體可信任的移動端資料安全整體保護方案,包含企業應用防護,移動裝置管控,安全審計等功能。

與其他解決方案進行對比,主要優勢:

1,安全虛擬手機有獨立於手機系統的核心和硬體抽象層,安全虛擬手機的核心資料、程序管理、記憶體管理、檔案系統、裝置管理獨立於手機系統,具備完整的安全性。現有SDK方案或者沙箱方案和手機系統共用一個核心和安卓框架層,企業應用存在和手機上的其他應用進行通訊和資料互動的風險。

2,非侵入式方案,方便部署和管理,方便接入到第三方管理系統,完全不需要企業應用做任何修改,具備更好的相容性。侵入式方案通常包含SDK方案或者加固方案,需要企業重新打包已有企業應用,存在相容性以及應用管理問題。

3,特殊安全能力,由於安全虛擬手機的螢幕是一個虛擬的螢幕裝置,透過控制螢幕上畫素點的顯示方式,支援螢幕盲水印,需要有特殊演算法才能計算出盲水印的資訊。

跨平臺遷移

安卓實現安卓-光速虛擬機器技術內幕

光速虛擬機器具備很好的遷移性,不依賴於虛擬化技術、在主流系統平臺包含國產作業系統UOS、Android、Linux、macOS、雲上系統等執行Android和Linux應用程式。

開放合作

光速虛擬機器除了產品自身外,正在和行業全方位合作,我們的官網:www。gsxnj。cn。有興趣的同學可以聯絡bd@smartgaga。com。

參考連結

1) https://www。microsoft。com/en-us/research/project/drawbridge/

2) https://docs。microsoft。com/zh-cn/archive/blogs/wsl/

3) https://github。com/google/gvisor

4) www。gsxnj。cn

5) www。vmos。com

6) https://anbox。io/

7) https://github。com/asLody/VirtualApp