本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種可執(zhí)行文件的加密方法,及一種可執(zhí)行文件的加密裝置。
背景技術(shù):
隨著軟件相關(guān)技術(shù)的飛速發(fā)展,人們的生活和工作對應(yīng)用程序的依賴度也隨之提高,其安全意識也逐漸增強(qiáng)。一方面,應(yīng)用程序在發(fā)布后,容易被反編譯而暴露其源代碼,導(dǎo)致該應(yīng)用程序的相關(guān)核心技術(shù)被竊取,給開發(fā)者造成巨大的經(jīng)濟(jì)損失,同時,也存在被破解后被植入惡意代碼的風(fēng)險,使得用戶的個人隱私的安全性受到威脅;另一方面,應(yīng)用程序作為一種特殊的產(chǎn)品,由于其數(shù)字化的特征,從問世起就一直遭受盜版的困擾,盜版的存在不僅給軟件開發(fā)者造成了巨大的損失,也極大地阻礙了整個軟件行業(yè)的發(fā)展。通常可執(zhí)行文件的輸入表、入口點(diǎn)函數(shù)、資源數(shù)據(jù)為非法盜取者分析可執(zhí)行文件的重要數(shù)據(jù),因此可執(zhí)行文件歷來是確保應(yīng)用程序安全性的重點(diǎn)保護(hù)對象?,F(xiàn)有技術(shù)對可執(zhí)行文件中的數(shù)據(jù)的保護(hù)方式抗分析能力較差,很容易被逆向工程反編譯和分析出來,造成數(shù)據(jù)的泄露及破壞。
因此,亟需一種對可執(zhí)行文件的保護(hù)方式,加大反編譯的難度,提高可執(zhí)行文件的數(shù)據(jù)安全性,從而加大應(yīng)用程序的信息安全。
技術(shù)實現(xiàn)要素:
為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
本發(fā)明的實施例提出了一種可執(zhí)行文件的加密方法,包括:
獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息;
根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號;
基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密;
將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件。
可選地,還包括:
將應(yīng)用程序安裝包解壓得到的解壓文件存儲至第一預(yù)定存儲位置,解壓文件包括可執(zhí)行文件;
將第一預(yù)定存儲位置處存儲的可執(zhí)行文件存儲至第二預(yù)定存儲位置;
其中,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,包括:
從第一預(yù)定存儲位置中讀取可執(zhí)行文件的分區(qū)表中各個符號的地址信息。
優(yōu)選地,根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號,包括:
根據(jù)已獲取到各個符號的地址信息,從第二存儲位置處確定待加密的符號。
可選地,基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密的步驟之后,還包括:
將加密后的符號保存于第二預(yù)定存儲位置中,并轉(zhuǎn)存至第三預(yù)定存儲位置;
其中,將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,包括:
根據(jù)已確定的各個符號的地址信息,將第一預(yù)定存儲位置中待加密的符號替換為第三預(yù)定存儲位置中與其各自符號地址信息對應(yīng)的加密后的符號。
可選地,還包括:
對第一預(yù)定存儲位置中的與應(yīng)用程序安裝包對應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。
本發(fā)明的另一實施例提出了一種可執(zhí)行文件的加密裝置,包括:
獲取模塊,用于獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息;
確定模塊,用于根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號;
加密模塊,用于基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密;
替換模塊,用于將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件。
可選地,還包括:
解壓模塊,用于將應(yīng)用程序安裝包解壓得到的解壓文件存儲至第一預(yù)定存儲位置,解壓文件包括可執(zhí)行文件;
存儲模塊,用于將第一預(yù)定存儲位置處存儲的可執(zhí)行文件存儲至第二預(yù)定存儲位置;
其中,獲取模塊,包括:
讀取單元,用于從第一預(yù)定存儲位置中讀取可執(zhí)行文件的分區(qū)表中各個符號的地址信息。
優(yōu)選地,確定模塊,包括:
確定單元,用于根據(jù)已獲取到各個符號的地址信息,從第二存儲位置處確定待加密的符號。
可選地,基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密之后,還包括:
保存及轉(zhuǎn)存模塊,用于將加密后的符號保存于第二預(yù)定存儲位置中,并轉(zhuǎn)存至第三預(yù)定存儲位置;
其中,替換模塊,用于根據(jù)已確定的各個符號的地址信息,將第一預(yù)定存儲位置中待加密的符號替換為第三預(yù)定存儲位置中與其各自符號地址信息對應(yīng)的加密后的符號。
可選地,還包括:
壓縮及打包模塊,用于對第一預(yù)定存儲位置中的與應(yīng)用程序安裝包對應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。
本發(fā)明的實施例中,提出了一種可執(zhí)行文件的加密方案,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息,為后續(xù)根據(jù)各個符號的地址信息將各個符號替換為各自對應(yīng)加密后的符號提供了必要的前提保障;根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號,實現(xiàn)了根據(jù)各個符號的地址信息及用戶的需求快速高效地確定待加密的符號;基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密,將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件,實現(xiàn)了無需額外的開發(fā)成本即可簡單便捷地對應(yīng)用程序安裝包中可執(zhí)行文件中的各個待加密符號進(jìn)行快速地加密,從而增加了對可執(zhí)行文件進(jìn)行反編譯和分析的難度,在不影響應(yīng)用程序運(yùn)行穩(wěn)定性及保證用戶使用過程無感知的前提下,實現(xiàn)了提高應(yīng)用程序的信息安全性的目的。
本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1為本發(fā)明中一個實施例的可執(zhí)行文件的加密方法的流程圖;
圖2為本發(fā)明中另一實施例的可執(zhí)行文件的加密裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
需要說明的是,本發(fā)明實施例中的應(yīng)用程序安裝包適用于安裝在ios(蘋果公司的移動操作系統(tǒng))中,因此,本發(fā)明實施例中,以對ios的應(yīng)用程序安裝包中的可執(zhí)行文件進(jìn)行加密為例說明。本領(lǐng)域技術(shù)人員可以了解到,現(xiàn)有技術(shù)中,通過逆向工程反編譯應(yīng)用程序安裝包中的可執(zhí)行文件能得到應(yīng)用程序的代碼中的相關(guān)類名、方法名和函數(shù)入口信息等應(yīng)用程序的信息,應(yīng)用程序的非法竊取者能夠根據(jù)這些信息分析得到應(yīng)用程序的軟件架構(gòu)信息、軟件的實現(xiàn)過程和核心技術(shù)的實現(xiàn)方式等信息,甚至能夠還原應(yīng)用程序的相關(guān)代碼,使得應(yīng)用程序的實現(xiàn)技術(shù)被泄露,因此對應(yīng)用程序安裝包進(jìn)行加密,最重要的是對應(yīng)用程序安裝包中的可執(zhí)行文件進(jìn)行加密。
圖1為本發(fā)明中一個實施例的可執(zhí)行文件的加密方法的流程圖。
本發(fā)明的實施例中,各步驟所執(zhí)行的內(nèi)容概述如下:步驟s110:獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息;步驟s120:根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號;步驟s130:基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密;步驟s140:將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件。
本發(fā)明的實施例中,提出了一種可執(zhí)行文件的加密方法,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息,為后續(xù)根據(jù)各個符號的地址信息將各個符號替換為各自對應(yīng)加密后的符號提供了必要的前提保障;根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號,實現(xiàn)了根據(jù)各個符號的地址信息及用戶的需求快速高效地確定待加密的符號;基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密,將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件,實現(xiàn)了無需額外的開發(fā)成本即可簡單便捷地對應(yīng)用程序安裝包中可執(zhí)行文件中的各個待加密符號進(jìn)行快速地加密,從而增加了對可執(zhí)行文件進(jìn)行反編譯和分析的難度,在不影響應(yīng)用程序運(yùn)行穩(wěn)定性及保證用戶使用過程無感知的前提下,實現(xiàn)了提高應(yīng)用程序的信息安全性的目的。以下針對各個步驟的具體實現(xiàn)做進(jìn)一步的說明:
步驟s110:獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息。
例如,對ios的應(yīng)用程序安裝包,如,app1.ipa,中的可執(zhí)行文件進(jìn)行加密的過程中,首先獲取app1.ipa中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,如匯編編譯后的匯編內(nèi)容包括匯編指令“.globl_main”,“.global”指令說明_main是一個外部符號,也就是執(zhí)行應(yīng)用程序app1的main()函數(shù),系統(tǒng)要調(diào)用它來運(yùn)行可執(zhí)行文件,可獲取到符號_main函數(shù)真正的開始地址如“x00002740”,編譯生成的二進(jìn)制文件將會在這個地方產(chǎn)生一個引用,以使得app1能夠正常安裝運(yùn)行。其中,在可執(zhí)行文件中,符號用于存儲可執(zhí)行文件的內(nèi)容信息、目標(biāo)文件列表、可執(zhí)行文件中的偏移位置及大小、每個文件對應(yīng)字段的位置和占用空間等內(nèi)容信息。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,可執(zhí)行文件指的是可以由操作系統(tǒng)進(jìn)行加載執(zhí)行的文件。在不同的操作系統(tǒng)環(huán)境下,可執(zhí)行程序的呈現(xiàn)方式不一樣,其中,ios操作系統(tǒng)的終端設(shè)備中主要的可執(zhí)行文件格式為mach-o即machobject格式,mach是一種操作系統(tǒng)內(nèi)核,mach內(nèi)核被next公司的nextstep操作系統(tǒng)使用。在mach上,一種可執(zhí)行的文件格為mach-o(machobjectfileformat,machobject文件格式),隨后,成為了osx的內(nèi)核基礎(chǔ)。所以雖然macosx是unix的“后代”,但所主要支持的可執(zhí)行文件格式是mach-o。ios是從osx演變而來,所以同樣是支持mach-o格式的可執(zhí)行文件。在ios的可執(zhí)行文件的內(nèi)容中,采用分片存儲通過代碼編譯后的內(nèi)容,每個分片為一個分區(qū),每個分區(qū)中存儲的每條內(nèi)容即為符號,而整個可執(zhí)行文件的所有分區(qū)的集合為一個分區(qū)表。
步驟s120:根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號。
例如,根據(jù)已獲取到的app1.ipa中的各個符號的地址信息,如符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”,若默認(rèn)待加密符號為應(yīng)用程序安裝包的可執(zhí)行文件中的全部的符號,則在應(yīng)用程序安裝包app1.ipa的可執(zhí)行文件中可確定待加密的符號為_main和_printf。
需要說明的是,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號的方式,還可以通過在配置文件中指定待加密的符號,如指定僅加密符號_main,也可以在加密的過程中,根據(jù)用戶的選擇,確定待加密的符號,本發(fā)明的實施例中雖會以特定的確定方式為例說明,但在此不做限定。
步驟s130:基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密。
例如,基于預(yù)定的加密算法,如sha1(securehashalgorithm,安全哈希算法)加密算法,對待加密符號_main進(jìn)行加密處理,得到加密后的符號,如“9a41494ace”,對待加密符號_printf進(jìn)行加密處理,得到加密后的符號,如“749436aca110”。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,在計算機(jī)技術(shù)中,加密算法有多種,本發(fā)明的實施例雖會以特定的加密算法為例說明,但在此不做限定。
步驟s140:將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件。
例如,若已確定待加密的符號僅為符號_main,將app1.ipa中待加密的符號_main替換為與符號_main的地址信息“x00002740”對應(yīng)的加密后的符號“9a41494ace”,以生成加密后的app1.ipa的可執(zhí)行文件。
優(yōu)選地,該加密方法還包括步驟s150和步驟s160;步驟s150:將應(yīng)用程序安裝包解壓得到的解壓文件存儲至第一預(yù)定存儲位置,解壓文件包括可執(zhí)行文件;步驟s160:將第一預(yù)定存儲位置處存儲的可執(zhí)行文件存儲至第二預(yù)定存儲位置。
例如,將應(yīng)用程序安裝包app1.ipa解壓得到的全部解壓文件存儲至第一預(yù)定存儲位置,如“…\文件夾a”,解壓文件包括可執(zhí)行文件;隨后提取“…\文件夾a”路徑下存儲的可執(zhí)行文件并存儲至第二預(yù)定存儲位置,如“…\文件夾b”。
通過本實施例,為高效快速地確定可執(zhí)行文件中的待加密符號提供了重要的前提保障,同時,避免了在應(yīng)用程序安裝包中直接對待加密符號進(jìn)行加密的過程中發(fā)生不可預(yù)期的錯誤時,無法采取逆向還原應(yīng)用程序安裝包中的文件的情況發(fā)生,進(jìn)一步地,提高了加密過程中異常情況的處理能力。
優(yōu)選地,步驟s110獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息的步驟進(jìn)一步包括步驟s111;步驟s111:從第一預(yù)定存儲位置中讀取可執(zhí)行文件的分區(qū)表中各個符號的地址信息。
例如,從第一預(yù)定存儲位置“…\文件夾a”中讀取可執(zhí)行文件的分區(qū)表中各個符號的地址信息,如符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”。
優(yōu)選地,步驟s120根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號,進(jìn)一步包括步驟s121;步驟s121:根據(jù)已獲取到各個符號的地址信息,從第二存儲位置處確定待加密的符號。
例如,根據(jù)已獲取到符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”,從第二存儲位置“…\文件夾b”處確定地址“x00002740”處的待加密的符號為符號_main。
優(yōu)選地,步驟s130基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密的步驟之后,還包括步驟s170;步驟s170:將加密后的符號保存于第二預(yù)定存儲位置中,并轉(zhuǎn)存至第三預(yù)定存儲位置。
例如,基于預(yù)定的加密算法sha1,對待加密符號_main進(jìn)行加密處理,得到加密后的符號,如“9a41494ace”,隨后將加密后的符號“9a41494ace”保存于第二預(yù)定存儲位置“…\文件夾b”中的地址信息為“x00002740”的位置處,并將加密后的符號“9a41494ace”及其對應(yīng)的地址信息“x00002740”存儲至第三預(yù)定存儲位置如“…\文件夾c”,以使得后續(xù)實現(xiàn)直接根據(jù)第三預(yù)定存儲位置“…\文件夾c”中加密后的符號“9a41494ace”及其對應(yīng)的地址信息“x00002740”,替換第一預(yù)定存儲位置“…\文件夾a”中對應(yīng)的待加密的符號_main。
通過本實施例,為快速地將待加密的待加密符號替換為各自對應(yīng)的已加密的符號提供了重要的前提保障,大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。
其中,步驟s140中將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號的步驟進(jìn)一步包括步驟s141;步驟s141:根據(jù)已確定的各個符號的地址信息,將第一預(yù)定存儲位置中待加密的符號替換為第三預(yù)定存儲位置中與其各自符號地址信息對應(yīng)的加密后的符號。
例如,應(yīng)用程序安裝包app1.ipa中的符號包括符號_main和符號_printf,若默認(rèn)的符號加密方式為對全部符號進(jìn)行加密,根據(jù)已確定的符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”,將第一預(yù)定存儲位置“…\文件夾a”中待加密的符號_main替換為第三預(yù)定存儲位置“…\文件夾c”中與符號_main的地址信息“x00002740”對應(yīng)的加密后的符號“9a41494ace”,并將“…\文件夾a”中待加密的符號_printf替換為“…\文件夾c”中與符號_printf的地址信息“x00276aac”對應(yīng)的加密后的符號“749436aca110”。
通過本實施例,根據(jù)第三預(yù)定存儲位置中加密后的符號及其對應(yīng)的地址信息,直接替換第一預(yù)定存儲位置中對應(yīng)的待加密的符號,節(jié)省了從第二預(yù)定存儲位置中確定加密后的符號的步驟,從而實現(xiàn)了快速高效地將待加密符號替換為各自對應(yīng)的已加密的符號,大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。
優(yōu)選地,該加密方法還包括步驟s180;步驟s180:對第一預(yù)定存儲位置中的與應(yīng)用程序安裝包對應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。
例如,接上例,對第一預(yù)定存儲位置“…\文件夾a”中的與應(yīng)用程序安裝包app1.ipa對應(yīng)的全部文件進(jìn)行壓縮處理,并通過打包工具將壓縮后的全部文件進(jìn)行打包以得到加密后的ios應(yīng)用程序app1加密后的安裝包。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,將壓縮后的全部文件進(jìn)行打包的方式有多種,本發(fā)明中雖會以特定的打包方式為例進(jìn)行說明,但在此不做限定。
圖2為本發(fā)明中另一實施例的可執(zhí)行文件的加密裝置的結(jié)構(gòu)示意圖。
本發(fā)明的實施例中,各模塊所執(zhí)行的內(nèi)容概述如下:獲取模塊210獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息;確定模塊220根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號;加密模塊230基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密;替換模塊240將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件。
本發(fā)明的實施例中,提出了一種可執(zhí)行文件的加密裝置,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息,為后續(xù)根據(jù)各個符號的地址信息將各個符號替換為各自對應(yīng)加密后的符號提供了必要的前提保障;根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號,實現(xiàn)了根據(jù)各個符號的地址信息及用戶的需求快速高效地確定待加密的符號;基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密,將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件,實現(xiàn)了無需額外的開發(fā)成本即可簡單便捷地對應(yīng)用程序安裝包中可執(zhí)行文件中的各個待加密符號進(jìn)行快速地加密,從而增加了對可執(zhí)行文件進(jìn)行反編譯和分析的難度,在不影響應(yīng)用程序運(yùn)行穩(wěn)定性及保證用戶使用過程無感知的前提下,實現(xiàn)了提高應(yīng)用程序的信息安全性的目的。以下針對各個模塊的具體實現(xiàn)做進(jìn)一步的說明:
獲取模塊210獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,其中,符號用于存儲可執(zhí)行文件的內(nèi)容信息。
例如,對ios的應(yīng)用程序安裝包,如,app1.ipa,中的可執(zhí)行文件進(jìn)行加密的過程中,首先獲取app1.ipa中可執(zhí)行文件的分區(qū)表中各個符號的地址信息,如匯編編譯后的匯編內(nèi)容包括匯編指令“.globl_main”,“.global”指令說明_main是一個外部符號,也就是執(zhí)行應(yīng)用程序app1的main()函數(shù),系統(tǒng)要調(diào)用它來運(yùn)行可執(zhí)行文件,可獲取到符號_main函數(shù)真正的開始地址如“x00002740”,編譯生成的二進(jìn)制文件將會在這個地方產(chǎn)生一個引用,以使得app1能夠正常安裝運(yùn)行。其中,符號用于存儲可執(zhí)行文件的符號信息、目標(biāo)文件列表、可執(zhí)行文件中的偏移位置及大小、每個文件對應(yīng)字段的位置和占用空間等內(nèi)容信息。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,可執(zhí)行文件指的是可以由操作系統(tǒng)進(jìn)行加載執(zhí)行的文件。在不同的操作系統(tǒng)環(huán)境下,可執(zhí)行程序的呈現(xiàn)方式不一樣,其中,ios操作系統(tǒng)的終端設(shè)備中主要的可執(zhí)行文件格式為mach-o即machobject格式,mach是一種操作系統(tǒng)內(nèi)核,mach內(nèi)核被next公司的nextstep操作系統(tǒng)使用。在mach上,一種可執(zhí)行的文件格為mach-o(machobjectfileformat,machobject文件格式),隨后,成為了osx的內(nèi)核基礎(chǔ)。所以雖然macosx是unix的“后代”,但所主要支持的可執(zhí)行文件格式是mach-o。ios是從osx演變而來,所以同樣是支持mach-o格式的可執(zhí)行文件。在ios的可執(zhí)行文件的內(nèi)容中,采用分片存儲通過代碼編譯后的內(nèi)容,每個分片為一個分區(qū),每個分區(qū)中存儲的每條內(nèi)容即為符號,而整個可執(zhí)行文件的所有分區(qū)的集合為一個分區(qū)表。
確定模塊220根據(jù)已獲取到的各個符號的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號。
例如,根據(jù)已獲取到的app1.ipa中的各個符號的地址信息,如符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”,若默認(rèn)待加密符號為應(yīng)用程序安裝包的可執(zhí)行文件中的全部的符號,則在應(yīng)用程序安裝包app1.ipa的可執(zhí)行文件中可確定待加密的符號為_main和_printf。
需要說明的是,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號的方式,還可以通過在配置文件中指定待加密的符號,如指定僅加密符號_main,也可以在加密的過程中,根據(jù)用戶的選擇,確定待加密的符號,本發(fā)明的實施例中雖會以特定的確定方式為例說明,但在此不做限定。
加密模塊230基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密。
例如,基于預(yù)定的加密算法,如sha1(securehashalgorithm,安全哈希算法)加密算法,對待加密符號_main進(jìn)行加密處理,得到加密后的符號,如“9a41494ace”,對待加密符號_printf進(jìn)行加密處理,得到加密后的符號,如“749436aca110”。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,在計算機(jī)技術(shù)中,加密算法有多種,本發(fā)明的實施例雖會以特定的加密算法為例說明,但在此不做限定。
替換模塊240將應(yīng)用程序安裝包中待加密的符號替換為與其各自符號地址信息對應(yīng)的加密后的符號,以生成加密后的可執(zhí)行文件。
例如,若已確定待加密的符號僅為符號_main,將app1.ipa中待加密的符號_main替換為與符號_main的地址信息“x00002740”對應(yīng)的加密后的符號“9a41494ace”,以生成加密后的app1.ipa的可執(zhí)行文件。
優(yōu)選地,該加密裝置還包括解壓模塊和存儲模塊;解壓模塊將應(yīng)用程序安裝包解壓得到的解壓文件存儲至第一預(yù)定存儲位置,解壓文件包括可執(zhí)行文件;存儲模塊將第一預(yù)定存儲位置處存儲的可執(zhí)行文件存儲至第二預(yù)定存儲位置。
例如,將應(yīng)用程序安裝包app1.ipa解壓得到的解壓文件存儲至第一預(yù)定存儲位置,如“…\文件夾a”,解壓文件包括可執(zhí)行文件;隨后提取“…\文件夾a”路徑下存儲的可執(zhí)行文件并存儲至第二預(yù)定存儲位置,如“…\文件夾b”。
通過本實施例,為高效快速地確定可執(zhí)行文件中的待加密符號提供了重要的前提保障,同時,避免了在應(yīng)用程序安裝包中直接對待加密符號進(jìn)行加密的過程中發(fā)生不可預(yù)期的錯誤時,無法采取逆向還原應(yīng)用程序安裝包中的文件的情況發(fā)生,進(jìn)一步地,提高了加密過程中異常情況的處理能力。
優(yōu)選地,獲取模塊210包括讀取單元;讀取單元從第一預(yù)定存儲位置中讀取可執(zhí)行文件的分區(qū)表中各個符號的地址信息。
例如,從第一預(yù)定存儲位置“…\文件夾a”中讀取可執(zhí)行文件的分區(qū)表中各個符號的地址信息,如符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”。
優(yōu)選地,確定模塊220包括確定單元;確定單元根據(jù)已獲取到各個符號的地址信息,從第二存儲位置處確定待加密的符號。
例如,根據(jù)已獲取到符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”,從第二存儲位置“…\文件夾b”處確定地址“x00002740”處的待加密的符號為符號_main。
優(yōu)選地,基于預(yù)定的加密算法,對待加密的符號進(jìn)行加密之后,還包括保存及轉(zhuǎn)存模塊;保存及轉(zhuǎn)存模塊將加密后的符號保存于第二預(yù)定存儲位置中,并轉(zhuǎn)存至第三預(yù)定存儲位置。
例如,基于預(yù)定的加密算法sha1,對待加密符號_main進(jìn)行加密處理,得到加密后的符號,如“9a41494ace”,隨后將加密后的符號“9a41494ace”保存于第二預(yù)定存儲位置“…\文件夾b”中的地址信息為“x00002740”的位置處,并將將加密后的符號“9a41494ace”及其對應(yīng)的地址信息“x00002740”存儲至第三預(yù)定存儲位置如“…\文件夾c”,以使得后續(xù)實現(xiàn)直接根據(jù)第三預(yù)定存儲位置“…\文件夾c”中加密后的符號“9a41494ace”及其對應(yīng)的地址信息“x00002740”,替換第一預(yù)定存儲位置“…\文件夾a”中對應(yīng)的待加密的符號_main。
通過本實施例,為快速地將待加密的待加密符號替換為各自對應(yīng)的已加密的符號提供了重要的前提保障,大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。
其中,替換模塊240用于根據(jù)已確定的各個符號的地址信息,將第一預(yù)定存儲位置中待加密的符號替換為第三預(yù)定存儲位置中與其各自符號地址信息對應(yīng)的加密后的符號。
例如,應(yīng)用程序安裝包app1.ipa中的符號包括符號_main和符號_printf,若默認(rèn)的符號加密方式為對全部符號進(jìn)行加密,根據(jù)已確定的符號_main的地址信息“x00002740”和符號_printf的地址信息“x00276aac”,將第一預(yù)定存儲位置“…\文件夾a”中待加密的符號_main替換為第三預(yù)定存儲位置“…\文件夾c”中與符號_main的地址信息“x00002740”對應(yīng)的加密后的符號“9a41494ace”,并將“…\文件夾a”中待加密的符號_printf替換為“…\文件夾c”中與符號_printf的地址信息“x00276aac”對應(yīng)的加密后的符號“749436aca110”。
通過本實施例,根據(jù)第三預(yù)定存儲位置中加密后的符號及其對應(yīng)的地址信息,直接替換第一預(yù)定存儲位置中對應(yīng)的待加密的符號,節(jié)省了從第二預(yù)定存儲位置中確定加密后的符號的步驟,從而實現(xiàn)了快速高效地將待加密符號替換為各自對應(yīng)的已加密的符號,大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。
優(yōu)選地,該加密裝置還包括壓縮及打包模塊;壓縮及打包模塊對第一預(yù)定存儲位置中的與應(yīng)用程序安裝包對應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。
例如,接上例,對第一預(yù)定存儲位置“…\文件夾a”中的與應(yīng)用程序安裝包app1.ipa對應(yīng)的全部文件進(jìn)行壓縮處理,并通過打包工具將壓縮后的全部文件進(jìn)行打包以得到加密后的ios應(yīng)用程序app1加密后的安裝包。
需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,將壓縮后的全部文件進(jìn)行打包的方式有多種,本發(fā)明中雖會以特定的打包方式為例進(jìn)行說明,但在此不做限定。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項或多項的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計和制造,或者也可以包括通用計算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計算機(jī)程序,這些計算機(jī)程序選擇性地激活或重構(gòu)。這樣的計算機(jī)程序可以被存儲在設(shè)備(例如,計算機(jī))可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、cd-rom、和磁光盤)、rom(read-onlymemory,只讀存儲器)、ram(randomaccessmemory,隨即存儲器)、eprom(erasableprogrammableread-onlymemory,可擦寫可編程只讀存儲器)、eeprom(electricallyerasableprogrammableread-onlymemory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計算機(jī))以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計算機(jī)程序指令來實現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計算機(jī)程序指令提供給通用計算機(jī)、專業(yè)計算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅是本發(fā)明的部分實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。