多elf文件保護(hù)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)安全領(lǐng)域,具體而言,本發(fā)明涉及一種多ELF文件保護(hù)方法及系統(tǒng)。
【背景技術(shù)】
[0002]安卓(Android)是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。安卓平臺發(fā)展迅速,已經(jīng)逐漸成為了移動終端的最普及的操作系統(tǒng),尤其是安卓平臺已經(jīng)深入到了各個領(lǐng)域,包括金融設(shè)備這種對安全性要求更高的產(chǎn)品。與其他終端操作系統(tǒng)相比,開放式的安卓系統(tǒng)為應(yīng)用開發(fā)者提供了更多的功能接口,這些功能接口在提高了系統(tǒng)的可擴(kuò)展性,但同時也為惡意軟件提供了便利。針對安卓系統(tǒng)的木馬等惡意軟件可以通過偽裝的方式保存在安卓安裝包中,騙取用戶安裝并授予一定的權(quán)限,之后通過濫用權(quán)限在后臺執(zhí)行一些特定行為,包括竊取用戶隱私、騙取資費(fèi)等行為;不僅如此,對于一些正常的安卓系統(tǒng)應(yīng)用,也存在通過非法拷貝、逆向工程、反編譯、調(diào)試、破解、二次打包、內(nèi)存截取等手段來威脅安卓系統(tǒng)的安全,不僅危害了使用者,也給正常應(yīng)用開發(fā)者造成嚴(yán)重的損害。
[0003]基于以上問題,現(xiàn)有技術(shù)中出現(xiàn)了多種安卓應(yīng)用的安全加固方法。目前,對ELF文件(Android平臺主要是共享鏈接庫文件,其擴(kuò)展名為.so,因此也叫SO文件)的保護(hù),主要通過加殼來進(jìn)行保護(hù)。加殼的程序可以有效阻止對程序的反匯編分析,以保護(hù)軟件版權(quán),防止被軟件破解。但現(xiàn)在對SO文件的保護(hù)方案,主要針對單個的SO文件進(jìn)行保護(hù),即對每一個SO文件都加殼一次。這樣就會有很多被加殼的SO文件,比如銀行的應(yīng)用軟件Iib下會有很多的SO文件,對其進(jìn)行保護(hù)就會生成很多加殼的SO文件。由于SO文件的數(shù)量較多,勢必造成最終應(yīng)用包的體積較大,很占空間;此外,所有的SO文件沒有任何隱藏,第三方可以很容易實現(xiàn)對其調(diào)用,存在安全隱患。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的多ELF文件保護(hù)方法和相應(yīng)的系統(tǒng)。
[0005]依據(jù)本發(fā)明的一個方面,提供了一種多ELF文件的保護(hù)方法,該方法包括:
[0006]將多個ELF文件并入一個殼程序文件中;
[0007]對所述殼程序文件中的多個ELF文件進(jìn)行加保護(hù)處理;
[0008]接收至少一個ELF文件的調(diào)用請求,確定所述調(diào)用請求所對應(yīng)的待調(diào)用對象;
[0009]根據(jù)所確定的待調(diào)用對象,在所述殼程序文件處對所述至少一個ELF文件進(jìn)行調(diào)用。
[0010]進(jìn)一步地,所述將待保護(hù)的多個ELF文件并入一個殼程序文件中包括:
[0011]將所述多個ELF文件轉(zhuǎn)換成二進(jìn)制流,寫入一個殼程序文件中,所述殼程序文件中至少包含所述多個ELF文件的頭文件信息。
[0012]進(jìn)一步地,所述對所述殼程序文件中的多個ELF文件進(jìn)行加保護(hù)處理包括:去掉所述多個ELF文件的隱藏信息、對所述多個ELF文件進(jìn)行分段加密處理、對所述多個ELF文件進(jìn)行代碼混淆處理、對所述多個ELF文件進(jìn)行反調(diào)試處理中的至少一種。
[00?3]進(jìn)一步地,所述接收至少一個ELF文件的調(diào)用請求,確定所述調(diào)用請求所對應(yīng)的待調(diào)用對象包括:
[0014]在所述殼程序文件外接收至少一個ELF文件的調(diào)用請求,確定所述調(diào)用請求所對應(yīng)的待調(diào)用對象;
[0015]所述根據(jù)所確定的待調(diào)用對象,在所述殼程序文件處對所述至少一個ELF文件進(jìn)行調(diào)用包括:
[0016]在所述殼程序文件處,接收所述待調(diào)用對象的確定結(jié)果,相應(yīng)地對所述至少一個ELF文件進(jìn)行調(diào)用。
[0017]更進(jìn)一步地,在所述殼程序文件外接收至少一個ELF文件的調(diào)用請求,確定所述調(diào)用請求所對應(yīng)的待調(diào)用對象包括:
[0018]在系統(tǒng)庫文件中建立鉤子;
[0019]利用所述鉤子在第三方應(yīng)用和所述殼程序文件之間接收第三方應(yīng)用的調(diào)用請求,解析所述調(diào)用請求所對應(yīng)的待調(diào)用對象。
[0020]根據(jù)本發(fā)明的另一個方面,提供了一種多ELF文件的保護(hù)系統(tǒng),該系統(tǒng)包括:
[0021 ]合并寫入單元,用于將多個ELF文件并入一個殼程序文件中;
[0022]請求對象確定單元,用于接收至少一個ELF文件的調(diào)用請求,確定所述調(diào)用請求所對應(yīng)的待調(diào)用對象;
[0023]調(diào)用單元,用于根據(jù)所確定的待調(diào)用對象,在所述殼程序文件處對所述至少一個ELF文件進(jìn)行調(diào)用。
[0024]進(jìn)一步地,所述合并寫入單元,用于將所述多個ELF文件轉(zhuǎn)換成二進(jìn)制流,寫入一個殼程序文件中,所述殼程序文件中至少包含所述多個ELF文件的頭文件信息;
[0025]進(jìn)一步地,所述保護(hù)處理單元用于去掉所述多個ELF文件的隱藏信息;和/或,用于對所述多個ELF文件進(jìn)行分段加密處理;和/或,用于對所述多個ELF文件進(jìn)行代碼混淆處理;和/或,用于對所述多個ELF文件進(jìn)行反調(diào)試處理;
[0026]進(jìn)一步地,所述請求對象確定單元用于在所述殼程序文件外接收至少一個ELF文件的調(diào)用請求,確定所述調(diào)用請求所對應(yīng)的待調(diào)用對象;
[0027]所述調(diào)用單元用于在所述殼程序文件處,接收所述待調(diào)用對象的確定結(jié)果,相應(yīng)地對所述至少一個ELF文件進(jìn)行調(diào)用。
[0028]更進(jìn)一步地,所述請求對象確定單元為系統(tǒng)庫文件中建立的鉤子,利用所述鉤子在第三方應(yīng)用和所述殼程序文件之間接收第三方應(yīng)用的調(diào)用請求,解析所述調(diào)用請求所對應(yīng)的待調(diào)用對象。
[0029]相比現(xiàn)有技術(shù),本發(fā)明的方案具有以下優(yōu)點(diǎn):
[0030]本發(fā)明提供的多ELF文件的保護(hù)方法和系統(tǒng),通過將多個Android動態(tài)鏈接庫(*.so)文件統(tǒng)一加殼保護(hù),這樣既實現(xiàn)了目標(biāo)動態(tài)庫隱藏的目的,防止第三方惡意調(diào)用,同時也有效降低了目標(biāo)軟件大小。
[0031]顯然,上述有關(guān)本發(fā)明優(yōu)點(diǎn)的描述是概括性的,更多的優(yōu)點(diǎn)描述將體現(xiàn)在后續(xù)的實施例揭示中,以及,本領(lǐng)域技術(shù)人員也可以本發(fā)明所揭示的內(nèi)容合理地發(fā)現(xiàn)本發(fā)明的其他諸多優(yōu)點(diǎn)。
[0032]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
【附圖說明】
[0033]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0034]圖1為本發(fā)明一種多ELF文件保護(hù)方法實施例的流程示意圖。
[0035]圖2為現(xiàn)有技術(shù)中SO文件正常的加載流程示意圖;
[0036]圖3為現(xiàn)有技術(shù)中使用常用的加固方法后的SO文件的加載流程示意圖;
[0037]圖4為基于本發(fā)明一種多ELF文件保護(hù)方法實施例的SO文件的加載流程示意圖。
[0038]圖5為本發(fā)明一種多ELF文件保護(hù)系統(tǒng)實施例的原理示意圖。
【具體實施方式】
[0039]下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0040]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“親接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
[0041]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
[0042]需要指出的是,本發(fā)明的技術(shù)方案,理念上與操作系統(tǒng)的選型無關(guān),對于windows、android、1S等操作系統(tǒng)均適用。但為說明的便利,以下將主要以Android為例進(jìn)行說明。
[0043]在安卓系統(tǒng)上,一個可以安裝、運(yùn)行的應(yīng)用,需要打包成安卓安裝包,S卩APK(Android applicat1n package file)文件格式。(APK文件