亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于遠程校驗的安卓軟件保護方案

        2017-05-19 12:45:47張建新
        計算機時代 2017年5期

        張建新

        摘 要: 通過加密dex文件和SO庫文件的方法可以很好地保護安卓平臺軟件的安全性,但是將密鑰信息保留在本地文件又將留下安全隱患。為解決這一問題,本文提出不將關鍵信息硬編碼于程序中,而是置于遠程服務器,通過與遠程服務通信進行關鍵信息的確認,從而達到保護安卓軟件的目的。試驗結果表明,該方法可以有效地保護安卓軟件的安全性,具有較高的可靠性。

        關鍵詞: 安卓軟件安全; 遠程校驗; 加殼技術; 軟件加密; AES算法

        中圖分類號:TP393 文獻標志碼:A 文章編號:1006-8228(2017)05-30-04

        An Android software protection scheme based on remote verification

        Zhang Jianxin

        (College of software,North university of China, Taiyuan, Shanxi 030051, China)

        Abstract: Encrypting DEX files and SO library files can be a good way to protect the security of Android software, but the key information will remain in the local file and will leave a security risk. In order to solve this problem, this paper proposes that the key information is not hard coded in the program, but is placed on the remote server, and the critical information is confirmed by communicating with the remote service, to achieve the purpose of protecting Android software. The experimental results show that this method can effectively protect the security of Android software and has high reliability.

        Key words: Android software security; remote verification; packer technology; software encryption; AES algorithm

        0 引言

        安卓系統(tǒng)占據(jù)了智能終端市場接近90%占有率[1],它的開源和內核的可移植性,既可以吸引愛好者的關注也給不法分子留下了機會。攻擊者可以利用各種手段對原始應用進行破解和篡改,隨著越來越多的受害者出現(xiàn),人們開始重視安卓平臺應用軟件的保護。

        文獻[2]闡述了安卓各個層面的細節(jié)和攻擊方法。文獻[3-4]通過自定義加載的方法實現(xiàn)在內存中加載核心代碼(SMC代碼字修改)。文獻[5]在設計安卓代碼保護方案時將MVC的概念引入到方案的設計中。文獻[6-8]提出的代碼保護方法都主要依賴于加密和加殼技術。文獻[9]是比較有代表性的一種方案,它通過AES加密算法加密DEX文件并將解密功能放到“傀儡class”文件中來增強其保密信息的安全性。但是上述方案在加密算法的選擇或者密鑰信息的保護方面都有漏洞。所以本文采用了一種文件保護和和遠程校驗相結合的安卓軟件保護方案。

        1 方案設計思路

        本文提出一種基于遠程校驗的安卓軟件保護方案,同時也用到了關鍵文件變形和加密的技術。

        在apk包的所有文件中,最重要的是classes.dex文件。了解smali語法的人可以通過反編譯和靜態(tài)分析技術來破解軟件。除了dex文件之外 SO文件也是攻擊的目標之一,本文對SO文件也進行相應的處理。

        對dex文件和so文件進行變形和加密,這樣對關鍵文件進行保護,具體的功能模塊示意圖如圖1。

        加密模塊通過AES算法加密需要保護的文件,并取得需要保護的信息部署到遠程服務器,然后再重新打包;解密模塊執(zhí)行的時候通過殼程序調用遠程服務器上的固定方法完成完整性校驗,然后返回密鑰信息對文件進行解密,再執(zhí)行正常流程。本方案采用的方法雖然會在遠程通信中耗費一定的資源,主要是對網(wǎng)絡傳輸?shù)囊蟊容^高,但其他方面都能做到用最少的資源最大限度地增加軟件的安全性。

        2 關鍵技術闡述

        保護方案主要技術點包括dex文件保護技術、SO文件保護技術和遠程服務實現(xiàn)技術。

        2.1 dex文件保護

        本文提出一種自定義代碼替換集的代碼混淆方法用于加密前處理dex文件。自定義代碼替換集可以由軟件使用者自己定義,自己掌控需要替換的代碼及相應位置,而替換的規(guī)則只有開發(fā)者知道,這就大大增加了分析者的破解難度,而且恢復替換所消耗的資源也少于大規(guī)模的替換,在資源的占用方面有優(yōu)勢,主要的工作難度都集中在前期自定義階段。這就使得分析人員即使得到了dex文件也不能充分的了解其中代碼的意義,無法順利的進行分析。具體實現(xiàn)中可以把代碼替換集置于遠程服務器中,使規(guī)則對程序透明化。當然,為了進一步增加獲得dex文件的難度,在打包之前還需要通過加密等其他手段對其進行處理。具體實現(xiàn)流程如圖2所示。

        2.2 SO文件保護

        以現(xiàn)行的分析技術,如果我們將SO文件直接放在jni目錄下打包發(fā)出,攻擊者可以輕而易舉地破解開發(fā)人員寫出來的代碼。本文在研究前人加固方案的基礎上,采用一種核心文件替代的方法。通過分析java調用動態(tài)鏈接庫的函數(shù)System.loadLibrary()發(fā)現(xiàn)接口中調用本地庫的關鍵語句為nativeLoad(name,loader,ldLibraryPath),該方法執(zhí)行的時候調用路徑為ldLibraryPath下名字為name的SO文件,由此系統(tǒng)可以自己定義一個核心SO文件,對其他SO文件進行統(tǒng)一處理,而動態(tài)鏈接庫中的主要實現(xiàn)邏輯文件則統(tǒng)一置于文件夾中并對其進行變形操作,最后將它放入assets文件夾。密鑰信息并不在本地文件中,而保存在遠程服務器中。具體處理與運行流程如圖3所示。

        2.3 Axis2簡介

        本文基于遠程獲取校驗信息和密鑰信息的功能將通過Axis2引擎來實現(xiàn)。

        Apache Axis2項目是一個基于java的包括服務端和客戶端的webservice框架。它適合輕量級的數(shù)據(jù)處理??蛻舳丝梢酝ㄟ^Axis2接口調用特定服務端發(fā)布出來的指定方法來實現(xiàn)某些特定的功能,用戶只需要發(fā)送請求的參數(shù),它就可以返回最后的結果。

        在手機端發(fā)送密鑰或者校驗請求到服務端,服務端根據(jù)請求信息找到對應的方法處理數(shù)據(jù)并返回結果。服務器端的主要代碼非常簡單,就是通過soap消息傳遞當前META-INF文件夾簽名或者直接發(fā)送需要的密鑰請求到事先部署到服務器配置文件中的初始簽名參數(shù)對比,如果判斷失敗則返回失敗指令,讓App停止運行,代碼如表1所示,客戶端發(fā)送請求代碼如表2所示。

        代碼中,RPCServiceClient對象是可以處理發(fā)送與接收數(shù)據(jù)業(yè)務的專用對象;Options對象用來攜帶可選參數(shù);EndpointReference對象裝載服務端的URL;Object數(shù)組用來存放需要校驗的數(shù)據(jù),即META-INF文件夾的數(shù)字簽名;Class數(shù)組用來指定返回值數(shù)據(jù)對應的類;Qname對象限定要調用的方法和WSDL文件的命名空間。最后通過業(yè)務處理對象調用接口中的invokeBlocking()方法實現(xiàn)與服務端的通信。

        3 方案的實現(xiàn)流程

        本文提出的方案包括PC端處理和遠程服務。PC端處理用到代碼集替換、加殼技術、MD5算法提取哈希值等。本方案將校驗信息和加密算法的密鑰都放在遠程服務端,運行的過程中通過殼程序的指令和遠程服務端進行通信,最終確定軟件是否安全。

        3.1 PC端處理

        文件保護主要工作包括代碼集標識符的定義和具體代碼集的選取以及加密功能的實現(xiàn)。代碼集標識符的定義需要遵循一定的原則,不能使用Dalvik字節(jié)碼的語法指令關鍵字,也不能選用能夠見文知義的標識符。系統(tǒng)根據(jù)用戶輸入的標識符和代碼集位置,在dex文件中替換相應的代碼并創(chuàng)建惟一標識,將一一對應的標識和代碼存儲在一個資源文件中生成代碼集,然后用AES算法對替換后的dex文件進行加密并將密鑰保留備用。

        當程序中存在jni代碼時,apk包中有一個lib文件夾用來存放所有的庫文件,核心文件替換會先將所有的SO文件用AES算法加密,產(chǎn)生的密鑰會部署在遠程服務端供運行時調用。然后將lib文件夾壓縮并修改文件名和擴展名來混淆破解者的判斷,最后將其放在資源文件目錄下。為了執(zhí)行調用,在原位置創(chuàng)建一個同名的lib文件夾并在里面編寫一個恢復源文件并執(zhí)行具體調用的”代理文件”,最后在殼程序中調用該代理文件處理具體的操作。

        3.2 遠程校驗

        綜合上述可以知道遠程服務端的實現(xiàn)機制,在具體的實現(xiàn)中,校驗META-INF完整性的功能可以在整個安卓應用的任何流程之前均執(zhí)行調用,此功能與前面的文件加密處在軟件運行的一前一后進行交叉保護,使得保護方案更加可靠。在性能方面,該手段對于資源的要求并不高,整個過程中只需要傳送一個字符串接收一個字符串,或者發(fā)送一個請求獲取一個字符串,對程序性能的影響基本可以忽略不計,只要在網(wǎng)絡暢通的情況下均可執(zhí)行。

        4 實驗驗證與分析

        為了驗證本方案的有效性和實用性,在win7系統(tǒng)下對本文實現(xiàn)的系統(tǒng)Xpro v1.0進行效果測試和功能對比實驗。

        4.1 方案效果測試

        系統(tǒng)加固處理發(fā)生在PC端,運行環(huán)境采用win7旗艦版系統(tǒng)和常用的反編譯工具。首先進行整體的運行,打開該系統(tǒng),選擇源文件路徑,把功能模塊都選中,并設置好替換代碼集,點擊開始,執(zhí)行結束后界面如圖4所示。

        本文從不同的應用市場的200多個應用中隨機篩選出了50個沒有經(jīng)過外部加固手段處理的,具有代表性的應用,通過本系統(tǒng)的處理之后,再進行安裝和使用。結果發(fā)現(xiàn),它的正常使用率達到93%,并且不受Android系統(tǒng)版本的影響,在不同的版本上測試,結果基本一致。剩余的7%,經(jīng)過進一步分析發(fā)現(xiàn)是程序內部已經(jīng)存在簽名校驗機制或其他的代碼保護機制,所以導致了二次打包之后無法運行,去除這部分之后,用自己新開發(fā)出來的測試程序去測,可用率都達到了100%。可見本系統(tǒng)是一個很可靠的加固系統(tǒng)。

        4.2 運行效率分析

        本系統(tǒng)對空間的消耗在一個正常的范圍內,雖然會隨著原始文件的大小變化出現(xiàn)小的波動但并不會出現(xiàn)加固后容量超過應用本身的狀況出現(xiàn),這是由加固的手段決定的,所以,本文只對加固后應用啟動時間和未加固時的啟動時間做一個統(tǒng)計分析。作為對比本文還使用了網(wǎng)易易盾的免費試用版和應用樂固的體驗版以及本文的Xpro V1.0版分別對相同的應用進行加固,并記錄其啟動時間。

        找出文件大小處于不同區(qū)間的十個應用的apk文件,分別在不加固、本系統(tǒng)加固和兩個免費的商業(yè)加固系統(tǒng)試用版本進行加固和啟動,記錄應用啟動時間,統(tǒng)計分析結果如圖5所示。

        從圖5中可以看出,無論是哪種加固系統(tǒng)處理之后的apk啟動時間都會有一定的延長,這是因為保護措施在正式的源程序加載之前需要一定的時間和資源來處理前面的加載工作,在本系統(tǒng)中,無論是對dex文件的解密還是SO文件恢復,這一系列操作都需要占用一定時間。不過,通過延長一定的初始化時間,仍在用戶可以接受的范圍之內的話就是值得的。本系統(tǒng)的效率雖然達不到商業(yè)加固應用的頂級水平,但跟它們的試用版本在效率方面也在伯仲之間,很好的完成了加固的任務。

        5 結束語

        本文提出基于遠程校驗和本地關鍵文件加密的安卓軟件保護方案,很好的平衡了安全性和軟件工作效率之間的矛盾,將校驗及解密信息存放于遠程服務器中,并選擇了效率及安全性都很優(yōu)秀的加密算法。實驗證明,本方案能夠有效抵抗靜態(tài),有效地保護了APK文件,在實際的應用中,本方案往往會與其他保護手段結合使用,使其發(fā)揮更大的作用。本方案的不足之處是未能考慮到遠程服務器交互過程中的信息安全問題及遠程服務器本身的安全問題,這也將是下一步優(yōu)化的方向。

        參考文獻(References):

        [1] 騰訊移動安全實驗室.騰訊安全實驗室2016年上半年手機安全報告,2016.7.

        [2] 豐生強.Android軟件安全與逆向分析[M].人民郵電出版社,2013.

        [3] 董航.移動應用程序檢測與防護技術研究[D].北京郵電大學博士學位論文,2014.

        [4] 張曉,李林,許家樂等.基于SMC的Android軟件保護研究與實現(xiàn)[J].信息網(wǎng)絡安全,2014.11:74-78

        [5] 史成潔.Android平臺應用軟件保護技術的研究與實現(xiàn)[D].北京郵電大學碩士學位論文,2015.

        [6] 徐劍,武爽,孫琦等.面向Android應用程序的代碼保護方法研究[J].信息網(wǎng)絡安全,2014.10:11-17

        [7] 朱洪軍,陳灝,華保健等.移動應用代碼保護現(xiàn)狀與技術研究[J].計算機應用與軟件,2016.33(3):314-319,333

        [8] 張譯恬,王純.基于安卓系統(tǒng)JNI機制的SO庫加固方案設計[J].電信技術,2014.10:90-93

        [9] 錢海龍.移動終端應用安全加固關鍵技術研究[D].北京郵電大學碩士學位論文,2014.

        亚洲人妻御姐中文字幕| 女同同志熟女人妻二区| 国产人妖视频一区二区| 日韩精品视频在线观看无| 日本少妇高潮喷水视频| 国产公开免费人成视频| 免费人成再在线观看视频| 国产免费一级高清淫日本片| 久久精品免视看国产盗摄| 国产亚洲无码1024| 国产精品丝袜美女久久| 蜜桃精品人妻一区二区三区| 国产免费拔擦拔擦8x高清在线人| 国产午夜三级一区二区三| 国产在线h视频| 中文字幕手机在线精品| 久久精品国产亚洲av超清| 精品无码国产自产拍在线观看蜜| 国农村精品国产自线拍| 亚洲乱色视频在线观看| 国产一区二区三区免费视| 日韩精品一区二区三区在线视频| 人妻中文字幕乱人伦在线| 少妇高潮一区二区三区99| 正在播放国产对白孕妇作爱| 无码啪啪人妻| 国产av无毛无遮挡网站| 日韩欧美aⅴ综合网站发布| 免费国产黄网站在线观看| 亚洲一区二区自拍偷拍| 亚洲福利网站在线一区不卡| 日本高清一级二级三级| 无码少妇一区二区性色av| 成黄色片视频日本秘书丝袜| 中文字幕无码免费久久| 熟女一区二区国产精品| 少妇裸体性生交| 国产性一交一乱一伦一色一情| 亚洲第一免费播放区| 日本一区二区三区精品免费| 国产成人精品久久亚洲高清不卡|