亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

可執(zhí)行文件的加密方法及加密裝置與流程

文檔序號(hào):11251288閱讀:636來源:國知局
可執(zhí)行文件的加密方法及加密裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種可執(zhí)行文件的加密方法,及一種可執(zhí)行文件的加密裝置。



背景技術(shù):

隨著軟件相關(guān)技術(shù)的飛速發(fā)展,人們的生活和工作對(duì)應(yīng)用程序的依賴度也隨之提高,其安全意識(shí)也逐漸增強(qiáng)。一方面,應(yīng)用程序在發(fā)布后,容易被反編譯而暴露其源代碼,導(dǎo)致該應(yīng)用程序的相關(guān)核心技術(shù)被竊取,給開發(fā)者造成巨大的經(jīng)濟(jì)損失,同時(shí),也存在被破解后被植入惡意代碼的風(fēng)險(xiǎn),使得用戶的個(gè)人隱私的安全性受到威脅;另一方面,應(yīng)用程序作為一種特殊的產(chǎn)品,由于其數(shù)字化的特征,從問世起就一直遭受盜版的困擾,盜版的存在不僅給軟件開發(fā)者造成了巨大的損失,也極大地阻礙了整個(gè)軟件行業(yè)的發(fā)展。通??蓤?zhí)行文件的輸入表、入口點(diǎn)函數(shù)、資源數(shù)據(jù)為非法盜取者分析可執(zhí)行文件的重要數(shù)據(jù),因此可執(zhí)行文件歷來是確保應(yīng)用程序安全性的重點(diǎn)保護(hù)對(duì)象?,F(xiàn)有技術(shù)對(duì)可執(zhí)行文件中的數(shù)據(jù)的保護(hù)方式抗分析能力較差,很容易被逆向工程反編譯和分析出來,造成數(shù)據(jù)的泄露及破壞。

因此,亟需一種對(duì)可執(zhí)行文件的保護(hù)方式,加大反編譯的難度,提高可執(zhí)行文件的數(shù)據(jù)安全性,從而加大應(yīng)用程序的信息安全。



技術(shù)實(shí)現(xiàn)要素:

為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:

本發(fā)明的實(shí)施例提出了一種可執(zhí)行文件的加密方法,包括:

獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息;

根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào);

基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密;

將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件。

可選地,還包括:

將應(yīng)用程序安裝包解壓得到的解壓文件存儲(chǔ)至第一預(yù)定存儲(chǔ)位置,解壓文件包括可執(zhí)行文件;

將第一預(yù)定存儲(chǔ)位置處存儲(chǔ)的可執(zhí)行文件存儲(chǔ)至第二預(yù)定存儲(chǔ)位置;

其中,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,包括:

從第一預(yù)定存儲(chǔ)位置中讀取可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息。

優(yōu)選地,根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào),包括:

根據(jù)已獲取到各個(gè)符號(hào)的地址信息,從第二存儲(chǔ)位置處確定待加密的符號(hào)。

可選地,基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密的步驟之后,還包括:

將加密后的符號(hào)保存于第二預(yù)定存儲(chǔ)位置中,并轉(zhuǎn)存至第三預(yù)定存儲(chǔ)位置;

其中,將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),包括:

根據(jù)已確定的各個(gè)符號(hào)的地址信息,將第一預(yù)定存儲(chǔ)位置中待加密的符號(hào)替換為第三預(yù)定存儲(chǔ)位置中與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào)。

可選地,還包括:

對(duì)第一預(yù)定存儲(chǔ)位置中的與應(yīng)用程序安裝包對(duì)應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。

本發(fā)明的另一實(shí)施例提出了一種可執(zhí)行文件的加密裝置,包括:

獲取模塊,用于獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息;

確定模塊,用于根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào);

加密模塊,用于基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密;

替換模塊,用于將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件。

可選地,還包括:

解壓模塊,用于將應(yīng)用程序安裝包解壓得到的解壓文件存儲(chǔ)至第一預(yù)定存儲(chǔ)位置,解壓文件包括可執(zhí)行文件;

存儲(chǔ)模塊,用于將第一預(yù)定存儲(chǔ)位置處存儲(chǔ)的可執(zhí)行文件存儲(chǔ)至第二預(yù)定存儲(chǔ)位置;

其中,獲取模塊,包括:

讀取單元,用于從第一預(yù)定存儲(chǔ)位置中讀取可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息。

優(yōu)選地,確定模塊,包括:

確定單元,用于根據(jù)已獲取到各個(gè)符號(hào)的地址信息,從第二存儲(chǔ)位置處確定待加密的符號(hào)。

可選地,基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密之后,還包括:

保存及轉(zhuǎn)存模塊,用于將加密后的符號(hào)保存于第二預(yù)定存儲(chǔ)位置中,并轉(zhuǎn)存至第三預(yù)定存儲(chǔ)位置;

其中,替換模塊,用于根據(jù)已確定的各個(gè)符號(hào)的地址信息,將第一預(yù)定存儲(chǔ)位置中待加密的符號(hào)替換為第三預(yù)定存儲(chǔ)位置中與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào)。

可選地,還包括:

壓縮及打包模塊,用于對(duì)第一預(yù)定存儲(chǔ)位置中的與應(yīng)用程序安裝包對(duì)應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。

本發(fā)明的實(shí)施例中,提出了一種可執(zhí)行文件的加密方案,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息,為后續(xù)根據(jù)各個(gè)符號(hào)的地址信息將各個(gè)符號(hào)替換為各自對(duì)應(yīng)加密后的符號(hào)提供了必要的前提保障;根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào),實(shí)現(xiàn)了根據(jù)各個(gè)符號(hào)的地址信息及用戶的需求快速高效地確定待加密的符號(hào);基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密,將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件,實(shí)現(xiàn)了無需額外的開發(fā)成本即可簡單便捷地對(duì)應(yīng)用程序安裝包中可執(zhí)行文件中的各個(gè)待加密符號(hào)進(jìn)行快速地加密,從而增加了對(duì)可執(zhí)行文件進(jìn)行反編譯和分析的難度,在不影響應(yīng)用程序運(yùn)行穩(wěn)定性及保證用戶使用過程無感知的前提下,實(shí)現(xiàn)了提高應(yīng)用程序的信息安全性的目的。

本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。

附圖說明

本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:

圖1為本發(fā)明中一個(gè)實(shí)施例的可執(zhí)行文件的加密方法的流程圖;

圖2為本發(fā)明中另一實(shí)施例的可執(zhí)行文件的加密裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過于正式的含義來解釋。

需要說明的是,本發(fā)明實(shí)施例中的應(yīng)用程序安裝包適用于安裝在ios(蘋果公司的移動(dòng)操作系統(tǒng))中,因此,本發(fā)明實(shí)施例中,以對(duì)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)信息、軟件的實(shí)現(xiàn)過程和核心技術(shù)的實(shí)現(xiàn)方式等信息,甚至能夠還原應(yīng)用程序的相關(guān)代碼,使得應(yīng)用程序的實(shí)現(xiàn)技術(shù)被泄露,因此對(duì)應(yīng)用程序安裝包進(jìn)行加密,最重要的是對(duì)應(yīng)用程序安裝包中的可執(zhí)行文件進(jìn)行加密。

圖1為本發(fā)明中一個(gè)實(shí)施例的可執(zhí)行文件的加密方法的流程圖。

本發(fā)明的實(shí)施例中,各步驟所執(zhí)行的內(nèi)容概述如下:步驟s110:獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息;步驟s120:根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào);步驟s130:基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密;步驟s140:將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件。

本發(fā)明的實(shí)施例中,提出了一種可執(zhí)行文件的加密方法,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息,為后續(xù)根據(jù)各個(gè)符號(hào)的地址信息將各個(gè)符號(hào)替換為各自對(duì)應(yīng)加密后的符號(hào)提供了必要的前提保障;根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào),實(shí)現(xiàn)了根據(jù)各個(gè)符號(hào)的地址信息及用戶的需求快速高效地確定待加密的符號(hào);基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密,將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件,實(shí)現(xiàn)了無需額外的開發(fā)成本即可簡單便捷地對(duì)應(yīng)用程序安裝包中可執(zhí)行文件中的各個(gè)待加密符號(hào)進(jìn)行快速地加密,從而增加了對(duì)可執(zhí)行文件進(jìn)行反編譯和分析的難度,在不影響應(yīng)用程序運(yùn)行穩(wěn)定性及保證用戶使用過程無感知的前提下,實(shí)現(xiàn)了提高應(yīng)用程序的信息安全性的目的。以下針對(duì)各個(gè)步驟的具體實(shí)現(xiàn)做進(jìn)一步的說明:

步驟s110:獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息。

例如,對(duì)ios的應(yīng)用程序安裝包,如,app1.ipa,中的可執(zhí)行文件進(jìn)行加密的過程中,首先獲取app1.ipa中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,如匯編編譯后的匯編內(nèi)容包括匯編指令“.globl_main”,“.global”指令說明_main是一個(gè)外部符號(hào),也就是執(zhí)行應(yīng)用程序app1的main()函數(shù),系統(tǒng)要調(diào)用它來運(yùn)行可執(zhí)行文件,可獲取到符號(hào)_main函數(shù)真正的開始地址如“x00002740”,編譯生成的二進(jìn)制文件將會(huì)在這個(gè)地方產(chǎn)生一個(gè)引用,以使得app1能夠正常安裝運(yùn)行。其中,在可執(zhí)行文件中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息、目標(biāo)文件列表、可執(zhí)行文件中的偏移位置及大小、每個(gè)文件對(duì)應(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)容中,采用分片存儲(chǔ)通過代碼編譯后的內(nèi)容,每個(gè)分片為一個(gè)分區(qū),每個(gè)分區(qū)中存儲(chǔ)的每條內(nèi)容即為符號(hào),而整個(gè)可執(zhí)行文件的所有分區(qū)的集合為一個(gè)分區(qū)表。

步驟s120:根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào)。

例如,根據(jù)已獲取到的app1.ipa中的各個(gè)符號(hào)的地址信息,如符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”,若默認(rèn)待加密符號(hào)為應(yīng)用程序安裝包的可執(zhí)行文件中的全部的符號(hào),則在應(yīng)用程序安裝包app1.ipa的可執(zhí)行文件中可確定待加密的符號(hào)為_main和_printf。

需要說明的是,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào)的方式,還可以通過在配置文件中指定待加密的符號(hào),如指定僅加密符號(hào)_main,也可以在加密的過程中,根據(jù)用戶的選擇,確定待加密的符號(hào),本發(fā)明的實(shí)施例中雖會(huì)以特定的確定方式為例說明,但在此不做限定。

步驟s130:基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密。

例如,基于預(yù)定的加密算法,如sha1(securehashalgorithm,安全哈希算法)加密算法,對(duì)待加密符號(hào)_main進(jìn)行加密處理,得到加密后的符號(hào),如“9a41494ace”,對(duì)待加密符號(hào)_printf進(jìn)行加密處理,得到加密后的符號(hào),如“749436aca110”。

需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,在計(jì)算機(jī)技術(shù)中,加密算法有多種,本發(fā)明的實(shí)施例雖會(huì)以特定的加密算法為例說明,但在此不做限定。

步驟s140:將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件。

例如,若已確定待加密的符號(hào)僅為符號(hào)_main,將app1.ipa中待加密的符號(hào)_main替換為與符號(hào)_main的地址信息“x00002740”對(duì)應(yīng)的加密后的符號(hào)“9a41494ace”,以生成加密后的app1.ipa的可執(zhí)行文件。

優(yōu)選地,該加密方法還包括步驟s150和步驟s160;步驟s150:將應(yīng)用程序安裝包解壓得到的解壓文件存儲(chǔ)至第一預(yù)定存儲(chǔ)位置,解壓文件包括可執(zhí)行文件;步驟s160:將第一預(yù)定存儲(chǔ)位置處存儲(chǔ)的可執(zhí)行文件存儲(chǔ)至第二預(yù)定存儲(chǔ)位置。

例如,將應(yīng)用程序安裝包app1.ipa解壓得到的全部解壓文件存儲(chǔ)至第一預(yù)定存儲(chǔ)位置,如“…\文件夾a”,解壓文件包括可執(zhí)行文件;隨后提取“…\文件夾a”路徑下存儲(chǔ)的可執(zhí)行文件并存儲(chǔ)至第二預(yù)定存儲(chǔ)位置,如“…\文件夾b”。

通過本實(shí)施例,為高效快速地確定可執(zhí)行文件中的待加密符號(hào)提供了重要的前提保障,同時(shí),避免了在應(yīng)用程序安裝包中直接對(duì)待加密符號(hào)進(jìn)行加密的過程中發(fā)生不可預(yù)期的錯(cuò)誤時(shí),無法采取逆向還原應(yīng)用程序安裝包中的文件的情況發(fā)生,進(jìn)一步地,提高了加密過程中異常情況的處理能力。

優(yōu)選地,步驟s110獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息的步驟進(jìn)一步包括步驟s111;步驟s111:從第一預(yù)定存儲(chǔ)位置中讀取可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息。

例如,從第一預(yù)定存儲(chǔ)位置“…\文件夾a”中讀取可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,如符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”。

優(yōu)選地,步驟s120根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào),進(jìn)一步包括步驟s121;步驟s121:根據(jù)已獲取到各個(gè)符號(hào)的地址信息,從第二存儲(chǔ)位置處確定待加密的符號(hào)。

例如,根據(jù)已獲取到符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”,從第二存儲(chǔ)位置“…\文件夾b”處確定地址“x00002740”處的待加密的符號(hào)為符號(hào)_main。

優(yōu)選地,步驟s130基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密的步驟之后,還包括步驟s170;步驟s170:將加密后的符號(hào)保存于第二預(yù)定存儲(chǔ)位置中,并轉(zhuǎn)存至第三預(yù)定存儲(chǔ)位置。

例如,基于預(yù)定的加密算法sha1,對(duì)待加密符號(hào)_main進(jìn)行加密處理,得到加密后的符號(hào),如“9a41494ace”,隨后將加密后的符號(hào)“9a41494ace”保存于第二預(yù)定存儲(chǔ)位置“…\文件夾b”中的地址信息為“x00002740”的位置處,并將加密后的符號(hào)“9a41494ace”及其對(duì)應(yīng)的地址信息“x00002740”存儲(chǔ)至第三預(yù)定存儲(chǔ)位置如“…\文件夾c”,以使得后續(xù)實(shí)現(xiàn)直接根據(jù)第三預(yù)定存儲(chǔ)位置“…\文件夾c”中加密后的符號(hào)“9a41494ace”及其對(duì)應(yīng)的地址信息“x00002740”,替換第一預(yù)定存儲(chǔ)位置“…\文件夾a”中對(duì)應(yīng)的待加密的符號(hào)_main。

通過本實(shí)施例,為快速地將待加密的待加密符號(hào)替換為各自對(duì)應(yīng)的已加密的符號(hào)提供了重要的前提保障,大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。

其中,步驟s140中將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào)的步驟進(jìn)一步包括步驟s141;步驟s141:根據(jù)已確定的各個(gè)符號(hào)的地址信息,將第一預(yù)定存儲(chǔ)位置中待加密的符號(hào)替換為第三預(yù)定存儲(chǔ)位置中與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào)。

例如,應(yīng)用程序安裝包app1.ipa中的符號(hào)包括符號(hào)_main和符號(hào)_printf,若默認(rèn)的符號(hào)加密方式為對(duì)全部符號(hào)進(jìn)行加密,根據(jù)已確定的符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”,將第一預(yù)定存儲(chǔ)位置“…\文件夾a”中待加密的符號(hào)_main替換為第三預(yù)定存儲(chǔ)位置“…\文件夾c”中與符號(hào)_main的地址信息“x00002740”對(duì)應(yīng)的加密后的符號(hào)“9a41494ace”,并將“…\文件夾a”中待加密的符號(hào)_printf替換為“…\文件夾c”中與符號(hào)_printf的地址信息“x00276aac”對(duì)應(yīng)的加密后的符號(hào)“749436aca110”。

通過本實(shí)施例,根據(jù)第三預(yù)定存儲(chǔ)位置中加密后的符號(hào)及其對(duì)應(yīng)的地址信息,直接替換第一預(yù)定存儲(chǔ)位置中對(duì)應(yīng)的待加密的符號(hào),節(jié)省了從第二預(yù)定存儲(chǔ)位置中確定加密后的符號(hào)的步驟,從而實(shí)現(xiàn)了快速高效地將待加密符號(hào)替換為各自對(duì)應(yīng)的已加密的符號(hào),大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。

優(yōu)選地,該加密方法還包括步驟s180;步驟s180:對(duì)第一預(yù)定存儲(chǔ)位置中的與應(yīng)用程序安裝包對(duì)應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。

例如,接上例,對(duì)第一預(yù)定存儲(chǔ)位置“…\文件夾a”中的與應(yīng)用程序安裝包app1.ipa對(duì)應(yīng)的全部文件進(jìn)行壓縮處理,并通過打包工具將壓縮后的全部文件進(jìn)行打包以得到加密后的ios應(yīng)用程序app1加密后的安裝包。

需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,將壓縮后的全部文件進(jìn)行打包的方式有多種,本發(fā)明中雖會(huì)以特定的打包方式為例進(jìn)行說明,但在此不做限定。

圖2為本發(fā)明中另一實(shí)施例的可執(zhí)行文件的加密裝置的結(jié)構(gòu)示意圖。

本發(fā)明的實(shí)施例中,各模塊所執(zhí)行的內(nèi)容概述如下:獲取模塊210獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息;確定模塊220根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào);加密模塊230基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密;替換模塊240將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件。

本發(fā)明的實(shí)施例中,提出了一種可執(zhí)行文件的加密裝置,獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息,為后續(xù)根據(jù)各個(gè)符號(hào)的地址信息將各個(gè)符號(hào)替換為各自對(duì)應(yīng)加密后的符號(hào)提供了必要的前提保障;根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào),實(shí)現(xiàn)了根據(jù)各個(gè)符號(hào)的地址信息及用戶的需求快速高效地確定待加密的符號(hào);基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密,將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件,實(shí)現(xiàn)了無需額外的開發(fā)成本即可簡單便捷地對(duì)應(yīng)用程序安裝包中可執(zhí)行文件中的各個(gè)待加密符號(hào)進(jìn)行快速地加密,從而增加了對(duì)可執(zhí)行文件進(jìn)行反編譯和分析的難度,在不影響應(yīng)用程序運(yùn)行穩(wěn)定性及保證用戶使用過程無感知的前提下,實(shí)現(xiàn)了提高應(yīng)用程序的信息安全性的目的。以下針對(duì)各個(gè)模塊的具體實(shí)現(xiàn)做進(jìn)一步的說明:

獲取模塊210獲取應(yīng)用程序安裝包中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的內(nèi)容信息。

例如,對(duì)ios的應(yīng)用程序安裝包,如,app1.ipa,中的可執(zhí)行文件進(jìn)行加密的過程中,首先獲取app1.ipa中可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,如匯編編譯后的匯編內(nèi)容包括匯編指令“.globl_main”,“.global”指令說明_main是一個(gè)外部符號(hào),也就是執(zhí)行應(yīng)用程序app1的main()函數(shù),系統(tǒng)要調(diào)用它來運(yùn)行可執(zhí)行文件,可獲取到符號(hào)_main函數(shù)真正的開始地址如“x00002740”,編譯生成的二進(jìn)制文件將會(huì)在這個(gè)地方產(chǎn)生一個(gè)引用,以使得app1能夠正常安裝運(yùn)行。其中,符號(hào)用于存儲(chǔ)可執(zhí)行文件的符號(hào)信息、目標(biāo)文件列表、可執(zhí)行文件中的偏移位置及大小、每個(gè)文件對(duì)應(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)容中,采用分片存儲(chǔ)通過代碼編譯后的內(nèi)容,每個(gè)分片為一個(gè)分區(qū),每個(gè)分區(qū)中存儲(chǔ)的每條內(nèi)容即為符號(hào),而整個(gè)可執(zhí)行文件的所有分區(qū)的集合為一個(gè)分區(qū)表。

確定模塊220根據(jù)已獲取到的各個(gè)符號(hào)的地址信息,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào)。

例如,根據(jù)已獲取到的app1.ipa中的各個(gè)符號(hào)的地址信息,如符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”,若默認(rèn)待加密符號(hào)為應(yīng)用程序安裝包的可執(zhí)行文件中的全部的符號(hào),則在應(yīng)用程序安裝包app1.ipa的可執(zhí)行文件中可確定待加密的符號(hào)為_main和_printf。

需要說明的是,在應(yīng)用程序安裝包的可執(zhí)行文件中確定待加密的符號(hào)的方式,還可以通過在配置文件中指定待加密的符號(hào),如指定僅加密符號(hào)_main,也可以在加密的過程中,根據(jù)用戶的選擇,確定待加密的符號(hào),本發(fā)明的實(shí)施例中雖會(huì)以特定的確定方式為例說明,但在此不做限定。

加密模塊230基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密。

例如,基于預(yù)定的加密算法,如sha1(securehashalgorithm,安全哈希算法)加密算法,對(duì)待加密符號(hào)_main進(jìn)行加密處理,得到加密后的符號(hào),如“9a41494ace”,對(duì)待加密符號(hào)_printf進(jìn)行加密處理,得到加密后的符號(hào),如“749436aca110”。

需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,在計(jì)算機(jī)技術(shù)中,加密算法有多種,本發(fā)明的實(shí)施例雖會(huì)以特定的加密算法為例說明,但在此不做限定。

替換模塊240將應(yīng)用程序安裝包中待加密的符號(hào)替換為與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào),以生成加密后的可執(zhí)行文件。

例如,若已確定待加密的符號(hào)僅為符號(hào)_main,將app1.ipa中待加密的符號(hào)_main替換為與符號(hào)_main的地址信息“x00002740”對(duì)應(yīng)的加密后的符號(hào)“9a41494ace”,以生成加密后的app1.ipa的可執(zhí)行文件。

優(yōu)選地,該加密裝置還包括解壓模塊和存儲(chǔ)模塊;解壓模塊將應(yīng)用程序安裝包解壓得到的解壓文件存儲(chǔ)至第一預(yù)定存儲(chǔ)位置,解壓文件包括可執(zhí)行文件;存儲(chǔ)模塊將第一預(yù)定存儲(chǔ)位置處存儲(chǔ)的可執(zhí)行文件存儲(chǔ)至第二預(yù)定存儲(chǔ)位置。

例如,將應(yīng)用程序安裝包app1.ipa解壓得到的解壓文件存儲(chǔ)至第一預(yù)定存儲(chǔ)位置,如“…\文件夾a”,解壓文件包括可執(zhí)行文件;隨后提取“…\文件夾a”路徑下存儲(chǔ)的可執(zhí)行文件并存儲(chǔ)至第二預(yù)定存儲(chǔ)位置,如“…\文件夾b”。

通過本實(shí)施例,為高效快速地確定可執(zhí)行文件中的待加密符號(hào)提供了重要的前提保障,同時(shí),避免了在應(yīng)用程序安裝包中直接對(duì)待加密符號(hào)進(jìn)行加密的過程中發(fā)生不可預(yù)期的錯(cuò)誤時(shí),無法采取逆向還原應(yīng)用程序安裝包中的文件的情況發(fā)生,進(jìn)一步地,提高了加密過程中異常情況的處理能力。

優(yōu)選地,獲取模塊210包括讀取單元;讀取單元從第一預(yù)定存儲(chǔ)位置中讀取可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息。

例如,從第一預(yù)定存儲(chǔ)位置“…\文件夾a”中讀取可執(zhí)行文件的分區(qū)表中各個(gè)符號(hào)的地址信息,如符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”。

優(yōu)選地,確定模塊220包括確定單元;確定單元根據(jù)已獲取到各個(gè)符號(hào)的地址信息,從第二存儲(chǔ)位置處確定待加密的符號(hào)。

例如,根據(jù)已獲取到符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”,從第二存儲(chǔ)位置“…\文件夾b”處確定地址“x00002740”處的待加密的符號(hào)為符號(hào)_main。

優(yōu)選地,基于預(yù)定的加密算法,對(duì)待加密的符號(hào)進(jìn)行加密之后,還包括保存及轉(zhuǎn)存模塊;保存及轉(zhuǎn)存模塊將加密后的符號(hào)保存于第二預(yù)定存儲(chǔ)位置中,并轉(zhuǎn)存至第三預(yù)定存儲(chǔ)位置。

例如,基于預(yù)定的加密算法sha1,對(duì)待加密符號(hào)_main進(jìn)行加密處理,得到加密后的符號(hào),如“9a41494ace”,隨后將加密后的符號(hào)“9a41494ace”保存于第二預(yù)定存儲(chǔ)位置“…\文件夾b”中的地址信息為“x00002740”的位置處,并將將加密后的符號(hào)“9a41494ace”及其對(duì)應(yīng)的地址信息“x00002740”存儲(chǔ)至第三預(yù)定存儲(chǔ)位置如“…\文件夾c”,以使得后續(xù)實(shí)現(xiàn)直接根據(jù)第三預(yù)定存儲(chǔ)位置“…\文件夾c”中加密后的符號(hào)“9a41494ace”及其對(duì)應(yīng)的地址信息“x00002740”,替換第一預(yù)定存儲(chǔ)位置“…\文件夾a”中對(duì)應(yīng)的待加密的符號(hào)_main。

通過本實(shí)施例,為快速地將待加密的待加密符號(hào)替換為各自對(duì)應(yīng)的已加密的符號(hào)提供了重要的前提保障,大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。

其中,替換模塊240用于根據(jù)已確定的各個(gè)符號(hào)的地址信息,將第一預(yù)定存儲(chǔ)位置中待加密的符號(hào)替換為第三預(yù)定存儲(chǔ)位置中與其各自符號(hào)地址信息對(duì)應(yīng)的加密后的符號(hào)。

例如,應(yīng)用程序安裝包app1.ipa中的符號(hào)包括符號(hào)_main和符號(hào)_printf,若默認(rèn)的符號(hào)加密方式為對(duì)全部符號(hào)進(jìn)行加密,根據(jù)已確定的符號(hào)_main的地址信息“x00002740”和符號(hào)_printf的地址信息“x00276aac”,將第一預(yù)定存儲(chǔ)位置“…\文件夾a”中待加密的符號(hào)_main替換為第三預(yù)定存儲(chǔ)位置“…\文件夾c”中與符號(hào)_main的地址信息“x00002740”對(duì)應(yīng)的加密后的符號(hào)“9a41494ace”,并將“…\文件夾a”中待加密的符號(hào)_printf替換為“…\文件夾c”中與符號(hào)_printf的地址信息“x00276aac”對(duì)應(yīng)的加密后的符號(hào)“749436aca110”。

通過本實(shí)施例,根據(jù)第三預(yù)定存儲(chǔ)位置中加密后的符號(hào)及其對(duì)應(yīng)的地址信息,直接替換第一預(yù)定存儲(chǔ)位置中對(duì)應(yīng)的待加密的符號(hào),節(jié)省了從第二預(yù)定存儲(chǔ)位置中確定加密后的符號(hào)的步驟,從而實(shí)現(xiàn)了快速高效地將待加密符號(hào)替換為各自對(duì)應(yīng)的已加密的符號(hào),大大地提高了應(yīng)用程序安裝包中可執(zhí)行文件的加密速度。

優(yōu)選地,該加密裝置還包括壓縮及打包模塊;壓縮及打包模塊對(duì)第一預(yù)定存儲(chǔ)位置中的與應(yīng)用程序安裝包對(duì)應(yīng)的全部文件進(jìn)行壓縮處理,并將壓縮后的全部文件進(jìn)行打包以得到加密后的應(yīng)用程序安裝包。

例如,接上例,對(duì)第一預(yù)定存儲(chǔ)位置“…\文件夾a”中的與應(yīng)用程序安裝包app1.ipa對(duì)應(yīng)的全部文件進(jìn)行壓縮處理,并通過打包工具將壓縮后的全部文件進(jìn)行打包以得到加密后的ios應(yīng)用程序app1加密后的安裝包。

需要說明的是,本領(lǐng)域技術(shù)人員可以了解到,將壓縮后的全部文件進(jìn)行打包的方式有多種,本發(fā)明中雖會(huì)以特定的打包方式為例進(jìn)行說明,但在此不做限定。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、cd-rom、和磁光盤)、rom(read-onlymemory,只讀存儲(chǔ)器)、ram(randomaccessmemory,隨即存儲(chǔ)器)、eprom(erasableprogrammableread-onlymemory,可擦寫可編程只讀存儲(chǔ)器)、eeprom(electricallyerasableprogrammableread-onlymemory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。

以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1