近年來,,隨著移動互聯(lián)網(wǎng)的飛速發(fā)展,移動安全產(chǎn)業(yè)步入了快速增長期,。在深耕移動安全和應(yīng)用安全產(chǎn)品的同時,通付盾移動安全實驗室重視虛擬機保護(VMP)技術(shù)在移動應(yīng)用加固的安全增強作用,,經(jīng)過技術(shù)上持續(xù)不斷的攻堅克難,,已將安全虛擬機更新到第三代,成為國內(nèi)外首家真正意義上將虛擬機保護(VMP)技術(shù)運用到移動應(yīng)用加固領(lǐng)域的廠商,。
虛擬機保護技術(shù)是何方神圣?核心思想是什么?通付盾虛擬機保護技術(shù)應(yīng)用于移動安全的哪些場景?成熟的虛擬機保護技術(shù)與市面上的偽技術(shù)如何區(qū)分?
今天,,通付盾帶你一起體會已成功服務(wù)多個企業(yè)級客戶的新一代虛擬機保護(VMP)技術(shù)的獨到之處,并進行一次針對移動應(yīng)用加固VMP技術(shù)的去偽存真之旅,。
1,、何謂虛擬機保護
虛擬機軟件保護技術(shù)是被動型軟件保護技術(shù)的分支,具體來說是添加有意義的混淆代碼的一種變型使用。根據(jù)應(yīng)用層級不同,,基本可分為硬件抽象層虛擬機,、操作系統(tǒng)層虛擬機和軟件應(yīng)用層虛擬機。用于保護軟件安全的虛擬機屬于軟件應(yīng)用層虛擬機,,同層的虛擬機還包括高級語言虛擬機,,如java程序語言運行環(huán)境jvm和.net程序語言運行環(huán)境CLR,后者采用虛擬機的原因是便于移植,,因此編譯器沒有直接生成可直接在機器上執(zhí)行的nativecode,,而改為生成中間代碼byte-code,再通過在不同機器環(huán)境下安裝對應(yīng)版本的虛擬機對byte-code進行解釋執(zhí)行,,從而實現(xiàn)跨平臺運行,。
用于保護軟件安全的虛擬機采用類似的流程。虛擬機保護軟件首先會對被保護的目標程序的核心代碼進行“編譯”——需要注意的是,,這里被編譯的不是源文件,,而是二進制文件——并生成效果等價的byte-code,然后為軟件添加虛擬機解釋引擎,。用戶最終使用軟件時,,虛擬機解釋引擎會讀取byte-code,并進行解釋執(zhí)行,,從而實現(xiàn)用戶體驗完全一致的執(zhí)行效果,。
要設(shè)計一套虛擬機保護軟件,首先要設(shè)計一套虛擬機指令,,也即是byte-code的指令集表,,生成byte-code的過程,實際是將原始機器指令流等價轉(zhuǎn)譯成虛擬機指令流的過程,。虛擬機指令集表與原始機器指令集表越正交越好,,安全系數(shù)越高。另外,,指令的設(shè)計應(yīng)盡可能地具備圖靈完備性,,能夠完整地表達出原始機器指令的所有可能表達。圖靈完備性越好,,則虛擬機保護引擎的保護的覆蓋范圍越廣,,健壯性越高。在軟件運行時,,編譯產(chǎn)生的Byte-code由內(nèi)嵌入軟件可執(zhí)行文件中的虛擬機解釋引擎,,采用讀取-分派的方式解釋執(zhí)行。
2,、通付盾安全虛擬機PayegisVM3.0解析
在移動安全實驗室開發(fā)和實踐安全加固產(chǎn)品的早期,,實驗室成員已早早注意到了虛擬機保護技術(shù)對于應(yīng)用加固產(chǎn)品的安全增強作用。但虛擬機保護技術(shù)在移動應(yīng)用加固產(chǎn)品上實踐會隨之帶來較大的兼容性和性能的影響,所以在實踐中我們秉持著小心求證,、步步推進的原則,,一直在研究和落實著針對移動平臺,虛擬機保護技術(shù)與應(yīng)用加固產(chǎn)品的最佳結(jié)合點,。
結(jié)果是喜人的,,目前通付盾安全虛擬機已經(jīng)更新到第三代PayegisVM3.0,而對于保護效果也是令人滿意的,。
對于一段基本邏輯代碼,,保護前如下所示,指令標準,,易被分析,。
而經(jīng)過虛擬機保護后,效果如下:
我們可以看出,,符合x86或arm體系架構(gòu)的標準匯編指令(mov,、add、pop等),,已變成了自定義加密匯編指令(xchg,、db、dq等),。
3,、去偽存真——揭開移動應(yīng)用VMP的真面目
通付盾移動安全實驗室研究和實踐移動應(yīng)用虛擬機保護技術(shù)的過程是艱辛的,因為涉及到眾多體系架構(gòu)(x86,、arm等)的研究以及復(fù)雜的二進制語言開發(fā),,使得相比dex加殼、so加殼技術(shù)難度更高,,服務(wù)也更難穩(wěn)定。
近期,,也有不少技術(shù)論壇和博客聲稱發(fā)布了針對移動應(yīng)用的VMP技術(shù),。經(jīng)研究,大多數(shù)技術(shù)方案并不成熟,,有的方案甚至和VMP的核心思想有本質(zhì)上的區(qū)別,。主要有以下幾種:
(1)代碼抽取和隱藏。將功能函數(shù)的實現(xiàn)提取并加密存放在應(yīng)用的其他文件目錄下,,運行時恢復(fù),。這是一種代碼隱藏技術(shù),與真正的VMP有很大的區(qū)別,。
(2)代碼混淆,。對程序功能代碼進行控制流平坦化、插入虛假控制流、花指令等方式進行處理,,使代碼可讀性降低,,增大逆向工程的難度。這是一種代碼混淆技術(shù),,與真正的VMP有很大的區(qū)別,。
真正的虛擬機保護技術(shù)應(yīng)是基于一套高質(zhì)量的自定義指令集和自定義虛擬機運行環(huán)境的動態(tài)代碼保護方案。通付盾移動安全實驗室基于多年技術(shù)研究和沉淀,,是國內(nèi)外首家真正意義上將虛擬機保護技術(shù)運用到移動應(yīng)用加固領(lǐng)域的廠商,,并已經(jīng)過客戶和市場的檢驗。誠邀更多企業(yè)一起,,踐行移動應(yīng)用安全,,保護廣大網(wǎng)民的網(wǎng)絡(luò)資產(chǎn)!
關(guān)于通付盾移動安全實驗室:
秉著技術(shù)為先,腳踏實地的原則,,圍繞科研機構(gòu)和學(xué)科帶頭人,,通付盾移動安全實驗室(BeiDouLab)于2012年底正式成立,陸續(xù)孵化了如移動應(yīng)用加固,、移動應(yīng)用檢測,、移動應(yīng)用渠道監(jiān)測等多項移動安全產(chǎn)品。