張博文 樊子謙 任奎穆 翟中豪 王光輝,3 何 欣,4
(1.河南大學軟件學院 開封 475001)(2.南京郵電大學物聯網學院 南京 210023)(3.河南省智能網絡理論與關鍵技術國際聯合實驗室 開封 475001)(4.河南省智能數據處理工程研究中心 開封 475001)
隨著移動應用服務的快速發展,作為新一代移動端應用程序分發入口,輕量級應用程序的發展前景日趨明朗化,群體智能軟件生態環境蒸蒸日上并且競爭激烈[1]。微信小程序作為一種流行的輕量級應用開發平臺,為開發人員提供了豐富的接口,簡單的組件,降低了開發門檻。然而,微信小程序受制于微信生態環境限制[2],從功能到接口均受到微信的管控,限制了軟件開發自由度與開放性,且單一開發平臺可能導致用戶隱私信息泄露風險。2018年,華為、小米、OPPO等九大手機廠商共同啟動了快應用標準[3~6]。快應用架構深度集成于各廠商的手機操作系統中,不僅可以支撐輕量級應用開發,而且其支撐的移動應用具有高度開發性與自由性,已經受到了產業界與學術界的高度關注[7~8]。
快應用提供了一種新的應用形態,其架構與手機操作系統深度融合,在滿足原生應用流暢體驗的同時,具有無須下載、隨時使用、用完就走的特點[9]。快應用架構建立了一種新的語言開發規范,使用前端技術棧開發,具備超級文本標記語言(Hyper Text Markup Language,HTML)與原生應用的雙重優點。與微信小程序相比,快應用與手機全局搜索、語音、桌面快捷方式等功能結合,提高了與用戶的交互性以及使用的便捷性。與HTML相比,快應用關注移動客戶端的開發,具有無需下載、即點即用的特點。惡意文件檢測系統能夠檢測移動應用中的惡意文件,有助于解決移動應用的安全問題[10],是智能軟件開發與應用過程中不容缺失的模塊。因此,基于快應用架構的惡意文件檢測是未來輕量級應用軟件開發關注的重要方向之一。
論文通過分析快應用架構的技術特征,實現了一種惡意文件檢測快應用系統。首先,通過介紹快應用的起源與發展背景,闡述了快應用軟件開發的生態系統。其次,通過與微信小程序和瀏覽器程序(論文以HTML5語言為例)進行技術特征對比,描述了快應用架構的技術特征,實現了一種惡意文件檢測快應用系統。最后,基于技術特征分析和系統實現與測試,展現了快應用架構的技術特征優勢。快應用架構代碼簡潔高效,可與手機搜索、語音識別等功能結合,擁有豐富程序入口,從而減少開發的成本、周期、難度。
快應用標準在2018年3月20日由華為、小米、OPPO、vivo、中興、金立、聯想、魅族、努比亞九大主流手機廠商共同發起。在2017年,小米推出的“直達服務”、魅族推出的“快捷應用”、金立推出的“秒開應用”便存有快應用的影子。快應用的啟動代表著九大手機廠商將基于安卓生態,在輕量級智能手機應用上進行長期合作。
快應用技術發展迅速。根據報告顯示,截止到2019年12月快應用月活用戶已經突破3億,相比2019年3月公布的2億用戶,實現了1.5倍增長,并且每日用戶人均打開次數從之前的2次增長至4次[11]。快應用聯盟亦愈加壯大,先后有一加、海信和中國移動加入其中,使得快應用聯盟成員擴大至12家。快應用聯盟積極舉辦了線上流量扶持計劃、線下巡回沙龍、快應用開發者大賽等活動。快應用標準版本已由最初的v1010版更新到v1070版本。
快應用生態系統整體結構如圖1所示。其中,快應用的生態基礎是手機硬件平臺的統一適配,生態環境是手機廠商的合力流量扶持,生態核心是以用戶為中心。快應用生態基礎的本質在于手機硬件平臺統一適配實現標準化,其基于前端技術棧與原生渲染結合的方式,提升移動互聯網應用開發效率,減少快應用生態開發的成本,為生態核心提供原生體驗。快應用生態環境的重點在于流量扶持。其中流量扶持可以分為四類:搜索場景中用戶主動行為產生的流量,推薦場景中系統主動行為產生的流量,通信場景中用戶之間交互產生的流量,營銷場景中的線上線下結合產生的流量。通過流量扶持,可以創造快應用生態土壤,也可以滿足不同用戶的需求。快應用架構深度集成于手機操作系統,可在操作系統層面提供客戶需求與應用服務的無縫連接,使用戶享受原生應用體驗,不需要搜索、下載環節,極大降低用戶決策造成的損失[12]。此外,用戶的不同需求將不斷影響生態基礎的未來發展與生態環境的模式更新迭代。

圖1 快應用生態系統結構示意圖
本節首先從快應用的文檔結構、組件和應用編程接口(Application Programming Interface,API)三個方面對快應用的技術特征進行描述。其次,將快應用與微信小程序和HTML5在文檔結構、用戶群、程序入口、運行環境以及代碼復雜性五個維度進行技術特征對比與分析。
快應用的文檔結構如圖2所示。快應用基于NodeJS環境,并研發了編譯工具hap-toolkit,可以通過npm倉庫執行命令行語句安裝hap-toolkit。NodeJS環境搭建完成以及hap-toolkit工具安裝完之后,使用相關命令行語句即可實現項目的初始化操作,即得到項目模板[13]。在項目模板中,快應用的文檔結構由package.json、src以及sign三部分構成。其中,package.json文件用于定義項目需要的各種模塊及配置信息。sign作為rpk包簽名模塊,內含debug調試環境,debug內為certificate.pem證書文件和private.pem秘鑰文件。src是項目源文件夾,分為Common、Demo、app.ux和manifest.json四個部分。Common用于存放公用的資源和組件文件,在項目初始化中自動生成模板應用圖標logo.png。Demo是頁面目錄,內含可自定義名稱的index.ux頁面文件,每一個ux文件是當前頁面或組件的具體化描述,一般在開發過程中,一個頁面乃至一個組件均獨立存在為一個ux文件。manifest.json文件是項目的整體信息配置文件,是用于配置項目的公共腳本資源。
快應用的組件特征分析如下。快應用為開發者提供了豐富組件,可以便捷地實現各種開發需求,其中有兩種使用率較高的開發組件:list和tabs。list組件用來對列表進行優化,從而達到對快應用的使用性能進行優化和用戶需求快速響應。list組件的性能優化分為精簡DOM層級、復用list-item、細粒度劃分list-item、關閉scrollpage四個方面。tabs組件用于對選項卡、頁面標簽等的布局,讓開發者可以對組件進行靈活搭配,達到對快應用的使用性能、操作體驗進行優化的目的。tabs中封裝了常見功能和效果,例如頁簽支持橫向滾動,支持手勢滑動切換內容頁等。在快應用組件的使用上,開發者還可以自定義小組件來渲染其他頁面標簽內容,從而對代碼的進行合理使用,提高代碼的可讀性,進而便于后期的維護以及其他開發者對該應用進行修改。除list和tabs組件外,快應用還可以使用靈活性較高的媒體組件、畫布組件、第三方組件。
快應用的API特征分析如下。快應用架構深度集成進各手機廠商的手機操作系統中,因此API種類繁多,包括基本功能、頁面交互、網絡訪問、文件數據、系統能力、圖形圖像、聲音音頻、第三方服務等。快應用程序可以通過應用市場、瀏覽器、桌面快捷搜索、智慧推薦服務等入口進入,也可以通過其API實現向特定服務進行推送的功能。
快應用架構集成于手機操作系統并進行深度定制,微信小程序技術充滿微信的原生色彩,瀏覽器具有跨平臺、兼容性好、插件豐富等特點。上述三種開發技術的目的均是為了提升應用程序開發的便捷性。通過使用組件和內置API,快應用架構可節省開發時間,優化開發代碼邏輯,提升代碼的可維護性。
快應用、微信小程序和瀏覽器的技術特征對比分析如表1所示。三種技術的文檔結構各有特色,快應用為ux文件、app.ux文件、manifest.json文件。微信小程序為app.js文件、app.json文件、app.wxss文件和wxml文件,其中app.js作為小程序的入口文件,app.wxss控制小程序的樣式顯示效果,app.json為小程序的全局配置文件,每個wxml文件用于描述當前頁面結構[14]。HTML5則主要為html文件、css文件和javascript文件,在基于瀏覽器開發網頁時,html文件主要是用于建立網頁的骨架,決定網頁的結構及內容,CSS(Cascading Style Sheet)層疊樣式表單主要是用來設置html骨架元素的樣式,設計網頁的表現樣式,javascript是一種解釋性腳本語言(代碼不進行預編譯),主要用于向html添加交互行為。HTML5通過html、head、body和DOCTYPE四種標簽統一其文檔格式[15]。

表1 快應用與微信小程序和HTML5的技術特征對比
快應用運行于支持快應用架構的手機操作系統,在大部分Android端使用。由于快應用屬于最新開發技術,雖然其用戶群相對較少,但是其用戶數量增長迅速。微信小程序用戶群為微信用戶,用戶數量較多。HTML5基于手機與PC等多種運行環境瀏覽器,在世界范圍內流行,用戶群豐富。
快應用的程序入口多元。快應用架構已經深度集成到各手機廠商的手機操作系統中,可以實現用戶需求與應用服務的無縫連接,程序入口豐富。微信小程序受制于微信生態環境限制,從功能到接口到程序入口均受到微信的管控,HTML5的程序入口基本為瀏覽器。
快應用與微信小程序的代碼相對簡潔。其快應用與微信小程序均在HTML5的基礎上新增了用于列表渲染的for指令和用于條件渲染的if指令。根據市場需求,快應用與微信小程序還封裝提供了功能集中的新標簽。例如,快應用內置的popup標簽可供開發者快速實現氣泡窗口。因此,快應用和微信小程序的代碼復雜度相對簡潔,而HTML5代碼復雜度相對復雜。
綜上所述,快應用技術在交互性與便捷性方面具有一定的技術優勢。首先,快應用區別于微信小程序的特點在于快應用無須基于任何基礎軟件支撐。快應用可與手機搜索功能、語音功能等深度融合交互,提高與用戶的交互性以及使用的便捷性。其次,相比于HTML5,快應用關注移動客戶端的開發,具有即點即用無需下載的特點,程序入口豐富。為了展現快應用所有具有的功能與優勢,論文實現了一種基于快應用架構的惡意文件檢測系統。
基于快應用的技術特征分析,論文實現了一種惡意文件檢測快應用。如圖3所示,該快應用系統采用了客戶/服務器模式(Client-Server,C/S)結構進行部署。其設計思想為MVC架構模式,包含三個模塊:View視圖模塊,Controller控制器模塊和Model模型模塊。View視圖模塊部署在客戶端,Controller控制器模塊和Model模型模塊部署于服務器端的應用服務器內。

圖3 惡意文件檢測系統架構示意圖
View視圖模塊、Controller控制器模塊和Model模型模塊的作用描述如下。View模塊負責為客戶提供操作簡單、人性化的使用頁面,實現文件和數據到服務器端的上傳,并從服務器端獲取數據,為客戶展示相關文件檢測的結果。Controller模塊實現前后端數據、文件的交互。系統傳輸功能體現在客戶選擇欲檢測的Android應用程序包(Android Package,APK)文件后,將其傳輸到服務器端進行檢測,最終由服務器端將結果和相關數據傳輸回客戶端,使用了網絡數據傳輸功能。Model模塊負責與數據庫交互、文件的惡意性檢測以及客戶信息處理三大功能。服務器經由Controller模塊接收客戶端上傳的APK文件,并對其進行反編譯,將所得數據傳入數據庫。
惡意文件檢測快應用利用反編譯相似度檢測算法進行惡意文件檢測[16]。反編譯相似度檢測算法流程如圖4(a)所示。算法對待測文件進行反編譯預處理,使檢測效率更高且檢測結果更精準。算法核心特征是通過對文件進行反編譯,提取其特征值[17]并與已知惡意文件特征庫進行比較,分析結果進而判斷待測文件是否具有惡意性。
惡意文件檢測快應用的系統流程如圖4(b)所示。首先,用戶需自行指定欲檢測的APK文件,選擇完畢后文件會被發送至服務器端。若文件發送成功,服務器會給客戶端返回響應,經客戶端處理最終向客戶提示成功信息,并自動跳轉至檢測頁面,若失敗會提示失敗信息。其次,客戶點擊檢測,客戶端向服務器發送檢測請求,服務器收到請求后訪問并提取客戶上傳的APK文件,調用反匯編相似度檢測算法對文件進行分析,并返回分析結果。最后,客戶端接收并處理數據后向用戶展現檢測結果。若出現服務器未按時收到請求、出現故障或檢測失敗等情況,客戶端將依據故障信息提示檢測失敗。

圖4 反編譯相似度檢測算法流程圖和惡意文件檢測快應用的系統流程圖
惡意文件檢測系統利用快應用架構進行客戶端開發,嵌套使用了tabs組件,將其作為每個頁面的框架結構,配合使用自定義組件和js腳本實現前端頁面。系統使用的內部接口為自定義函數接口,即為實現系統需求而編寫的不同功能的函數,包括判斷是否處于WiFi情況下播放的startVideo(),判斷網絡狀態的net WorkStatus(),檢測完后從服務器捕獲檢測結果的fetchData(),選定本地文件進行檢測的quickScan(),和承接文件上傳至服務器的upLoadFn()。系統使用的外部接口均為快應用內置接口,包括路由接口route,多媒體接口media,數據請求接口fetch,上傳下載接口request,文件存儲接口file和網絡狀態接口network。
系統服務器端包含應用服務器和數據庫,應用服務器采用Java語言編寫,使用JavaWeb技術開發,并基于Tomcat服務器搭建。數據庫使用MySQL數據庫。應用服務器分為兩個部分,分別對數據交互和惡意文件檢測進行功能實現。首先,第一部分為前后端數據與文件交互功能,將所有數據進行處理后導入數據庫,將文件單獨存儲到特定存儲空間中,以備檢測算法訪問提取,將數據庫中取出的數據信息做封裝處理,將最終檢測的結果數據封裝響應客戶端。其次,第二部分為惡意文件檢測功能,即通過反編譯相似度檢測算法,檢測客戶上傳的APK文件。此外,數據庫負責數據的存儲與維護,用于存儲APK文件經反編譯后得到的臨時文件信息以及特征匹配所用的特征值信息。
基于系統架構與客戶端和服務器端模塊,實現了一種惡意文件檢測快應用。其源碼中屬性為class="down_div1"的div標簽用于顯示檢測基準,屬性為class="down_div2"的div標簽用于顯示檢測結果。div標簽的for屬性用于根據源數據數組渲染列表,tid屬性用于指定數組元素的唯一Id,tid="uniqueId"表示使用數組List1、List2的數組元素,$item.uniqueId作為數組元素的唯一Id。需要注意,uniqueId屬性值在每個數組元素都不一樣,其下的$item.type代表文件類別,$item.probability代表檢測后得到的每種類別概率,從數組List1、List2內綁定具體數據。惡意文件檢測快應用系統檢測結果頁面的核心代碼如下:
{{$item.probability}}
{{$item.probability}}
快應用顯示效果如圖5(a)所示,基于移動HTML5應用開發實現的前端效果如圖5(b)所示,微信小程序顯示效果如圖5(c)所示。通過分別基于快應用、HTML5和微信小程序進行開發,可以發現三者代碼結構類同,組件標簽相似,在顯示效果基本相同時快應用開發代碼最簡。具體表現為在實現系統檢測結果頁面的結構文件時,快應用需編寫42行代碼,微信小程序需編寫58行代碼,HTML5需編寫102行代碼。這是因為快應用與微信小程序均比HTML5的基礎上新增了用于列表渲染的for指令和用于條件渲染的if指令等。同時快應用與微信小程序還封裝好了功能集中的新標簽,這都大大減少了開發時所需代碼的數量。

圖5 快應用、HTML5和微信小程序的效果展示圖
三者開發的不同點分析如下。快應用的ux頁面文件中,template標簽元素是根元素,template標簽下只允許存在一個根節點[18]。HTML5中以html標簽元素作為根元素,表明文檔的開始部分。微信小程序中的wxml頁面文件則是與HTML5非常類似,由標簽、屬性等構成。在上述快應用系統核心代碼中,text是快應用的文本標簽,而在HTML5中的文本標簽則是p標簽、b標簽、h1標簽等,并無text標簽[19]。微信小程序擁有text文本標簽,使用view標簽、scroll-view標簽、cover-view標簽等作為視圖容器標簽,但快應用和HTML5并無div標簽。因此可見快應用代碼的簡潔和高效特征。
基于對快應用、微信小程序和移動HTML5應用開發的實現,進行測試與分析。系統已在測試網絡中正常運行,整個測試網絡由一臺服務器和一部移動手機構成,服務器為惠普(HP)暗夜精靈Ⅲ代筆記本電腦,移動手機為華為nova 4。基于快應用、微信小程序和移動HTML5應用開發實現的前端在共同的一部手機上測試運行。
系統功能和性能測試結果如圖6和圖7所示。其中,快應用、微信小程序和HTML5的文件上傳時間如圖6所示,表示在待檢測APK文件大小、網絡通信環境等因素相同的情況下,三種技術上傳速度的比較。待檢測APK文件大小與檢測算法執行時間的關系如圖7所示,其時間僅指檢測時間,不包含文件上傳時間。通過功能測試和性能測試,達成了預期的設計目的,驗證了系統的有效性和可行性。通過測試分析可以看出,在相同的環境下對同一文件進行上傳操作,快應用和微信小程序速度基本相同且快應用更加穩定,HTML5具有較大時間。檢測算法執行時間隨著待檢測APK文件大小的增加而增加。基于快應用的系統和傳統的移動應用軟件系統相比,便捷性取得了巨大的提升。

圖6 快應用、微信小程序和HTML5的文件上傳速度的比較

圖7 APK文件大小與算法執行時間的關系
快應用架構具有無需下載、即點即用等多類特點,獲得了產業界與學術屆的廣泛關注與支持。論文介紹了快應用的起源與背景,闡述了其生態系統,分析了其在文檔結構、用戶群、程序入口和運行環境方面的技術特征,實現了一種基于快應用架構的惡意文件檢測系統。通過將快應用與微信小程序和瀏覽器進行技術特征對比,分析得出快應用的技術優勢。快應用采用前端技術棧作為開發框架,用戶體驗上與微信小程序類似,代碼框架上與HTML類同,設計原理與實現技術上獨具風格。與微信小程序相比,快應用程序入口更為豐富,能與手機搜索功能、語音功能深度結合。與瀏覽器前端開發技術相比,快應用代碼更為簡潔和高效。因此,快應用框架可以減少開發的成本、周期與難度,便于技術人員上手開發,基于快應用架構的應用軟件無需繁瑣的下載安裝便可以實現其原生體驗。