基于art模式的軟件加固方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及應用軟件及數(shù)據(jù)的安全領域,尤其涉及一種基于ART模式的軟件加固方法及裝置。
【背景技術】
[0002]隨著安卓系統(tǒng)的普及,伴隨安卓系統(tǒng)的應用也層出不窮。安卓系統(tǒng)為開源系統(tǒng),應用的分發(fā)渠道眾多,經(jīng)常面臨著病毒植入、廣告替換、支付渠道篡改、釣魚、信息劫持等風險,如何對應用進行有效的保護,是廣大軟件開發(fā)者一直致力于的難題。
[0003]ART模式是安卓在4.4版本中新增的一種應用運行模式,與傳統(tǒng)的Dalvik模式不同,ART模式可以實現(xiàn)更為流暢的安卓系統(tǒng)體驗,ART相對于Dalvik的一大變化是它不僅支持即時編譯(JIT),而且還支持預先編譯(Α0Τ)。在Dalvik環(huán)境下,應用程序每次運行,都需要先從字節(jié)碼編譯為機器代碼才行。而ART環(huán)境下可以只編譯一次,然后每次應用程序運行時,都可以直接執(zhí)行編譯好的機器代碼。很好理解的是,ART模式的預先編譯可以明顯改善電池續(xù)航,因為應用程序每次運行時不用重復編譯了,從而減少了對CPU的使用頻率,降低能耗。但是,目前的軟件加固方法都是基于安卓系統(tǒng)之前的Dalvik模式開發(fā)的軟件保護系統(tǒng),應用軟件加固是用于Dalvik虛擬機上;隨著安卓ART模式的推出,其編譯環(huán)境、運行機制等都有了很大的變化,因此,亟需重新對ART模式下的應用軟件進行軟件加固的設計和實現(xiàn)。
【發(fā)明內容】
[0004]本發(fā)明提供一種基于ART模式的軟件加固方法及裝置,用于實現(xiàn)對ART模式下的軟件進行加固,使攻擊者難于獲取到攻擊軟件的明文字節(jié)碼,有效保護安卓應用軟件的安全。
[0005]本發(fā)明提供一種基于ART模式的軟件加固方法,包括:
[0006]運行二次加載dexclassloader函數(shù),判斷是否存在oat文件路徑;
[0007]若存在,則根據(jù)所述oat文件路徑在文件系統(tǒng)中調取密文oat文件;
[0008]將所述密文oat文件映射到內存系統(tǒng)中,對所述密文oat文件進行解密操作,得到解密后的明文oat文件,以運行所述明文oat文件對應的軟件。
[0009]本發(fā)明還提供一種基于ART模式的軟件加固裝置,包括:
[0010]二次加載模塊,用于運行二次加載dexclassloader函數(shù),判斷是否存在oat文件路徑;
[0011 ]調取模塊,用于當所述二次加載模塊判斷存在oat文件路徑時,根據(jù)所述oat文件路徑在文件系統(tǒng)中調取密文oat文件;
[0012]映射模塊,用于將所述密文oat文件映射到內存系統(tǒng)中;
[0013]解密模塊,用于對所述密文oat文件進行解密操作,得到解密后的明文oat文件,以運行所述明文oat文件對應的軟件。
[0014]本發(fā)明提供一種基于ART模式的軟件加固方法及裝置,通過運行二次加載dexclassloader函數(shù),判斷是否存在oat文件路徑;若存在,則根據(jù)該oat文件路徑在文件系統(tǒng)中調取密文oat文件;并將密文oat文件映射到內存系統(tǒng)中,對該密文oat文件進行解密操作,得到解密后的明文oat文件,以運行所述明文oat文件對應的軟件。從而實現(xiàn)在ART模式下對軟件進行加固處理,使攻擊者難于獲取到攻擊軟件的明文字節(jié)碼文件,有效保護安卓應用軟件的安全。
【附圖說明】
[0015]圖1為本發(fā)明基于ART模式的軟件加固方法的實施例一的流程示意圖;
[0016]圖2為本發(fā)明基于ART模式的軟件加固方法的實施例二的流程示意圖;
[0017]圖3為本發(fā)明基于ART模式的軟件加固裝置的實施例一的結構示意圖;
[0018]圖4為本發(fā)明基于ART模式的軟件加固裝置的實施例二的結構示意圖。
【具體實施方式】
[0019]圖1為本發(fā)明基于ART模式的軟件加固方法的實施例一的流程示意圖,如圖1所示,本實施例所述的基于ART模式的軟件加固方法,包括:
[0020]步驟101、運行二次加載dexclassloader函數(shù),判斷是否存在oat文件路徑。
[0021]步驟102、若存在oat文件路徑,則根據(jù)該oat文件路徑在文件系統(tǒng)中調取密文oat文件。
[0022]步驟103、將密文oat文件映射到內存系統(tǒng)中,對該密文oat文件進行解密操作,得到解密后的明文oat文件,以運行明文oat文件對應的軟件。
[0023]具體的,本實施例的基于ART模式的軟件加固方法可以應用于安裝有安卓4.4版本以上,具有ART模式的終端(客戶端設備)中,該終端包括:手機終端、平板電腦等。其中,ART模式的英文全稱為:Android runtime,其是谷歌Android 4.4系統(tǒng)新增的一種應用運行模式,與傳統(tǒng)的Dalvik模式不同,ART模式可以實現(xiàn)更為流暢的安卓系統(tǒng)體驗。ART與Dalvik的虛擬機模式不同,外在的體現(xiàn)是兩者使用了不同的庫文件,一個是libart.so另一個則是libdvm.so。兩個模式在ΑΡΚ (APK是Android Package的縮寫,即安卓安裝包)文件安裝時采用的代碼優(yōu)化方式也不一樣,Dalvik模式采用dexopt的代碼優(yōu)化方式;ART模式采用dexoat的代碼優(yōu)化方式。Google選擇ART模式的原因是使應用在啟動時更迅速,對內存RAM的占用少等。然而改進也是要有一些其他代價的,比如ART模式下,應用的安裝時長會變長、對ROM的占用會變大。而上述問題的原因可以理解為進行ART模式下deX2oat操作的代碼優(yōu)化時間要比Dalvik模式下dex2opt操作的代碼優(yōu)化時間長。dex2oat會將dex字節(jié)碼翻譯成本地機器碼,而deX2opt則是將dex字節(jié)碼翻譯成優(yōu)化后的字節(jié)碼,在APK文件運行時再轉換成能運行的JIT cache ο對于軟件加固而言,在ART模式下如果按照在Dalvik模式時的做法,在每次運行APK文件時,重新對dex字節(jié)碼進行解密并且進行dex2opt代碼優(yōu)化則會產生兩個難點問題,一是deX2oat優(yōu)化時長過長,會導致應用運行的速度明顯變慢,每次打開APK過于遲緩;二是deX2oat轉化的難度不僅在于函數(shù)實現(xiàn)的復雜性,更在于要做到平臺兼容性,就必須將代碼轉化的這一部分自行編程實現(xiàn),而系統(tǒng)在實現(xiàn)這一部分的時候不同于Dalvik模式下的dexopt代碼優(yōu)化,用到了很多類,而類與類之間的關聯(lián)性很大,調用層次深,因此很難做到自行編程實現(xiàn)。因此,針對ART模式的特點,采用上述步驟101到步驟103的技術方案,實現(xiàn)對軟件的加固保護。
[0024]本實施例的基于ART模式的軟件加固方法,通過運行二次加載dexclassloader函數(shù),判斷是否存在oat文件路徑;若存在,則根據(jù)該oat文件路徑在文件系統(tǒng)中調取密文oat文件;并將密文oat文件映射到內存系統(tǒng)中,對該密文oat文件進行解密操作,得到解密后的明文oat文件,以運行所述明文oat文件對應的軟件。從而實現(xiàn)在ART模式下對軟件進行加固處理,使攻擊者難于獲取到攻擊軟件的明文字節(jié)碼文件,有效保護安卓應用軟件的安全。
[0025]圖2為本發(fā)明基于ART模式的軟件加固方法的實施例二的流程示意圖,如圖2所示,本實施例在上述實施例所述的方法的基礎上,包括如下步驟:
[0026]步驟201、運行二次加載dexclassloader函數(shù),判斷是否存在oat文件路徑;若不存在,執(zhí)行步驟202 ;若存在,執(zhí)行步驟206。
[0027]步驟202、根據(jù)密文dex文件路徑在文件系統(tǒng)中調取密文d