專利名稱::Elf文件加密方法及系統(tǒng)的制作方法ELF文件加密方法及系統(tǒng)
技術領域:
:本發(fā)明涉及加密技術,特別是涉及一種ELF文件加密方法及系統(tǒng)。
背景技術:
:ELF(excutableandlinkingformat,可執(zhí)行鏈接格式)文件是一種可執(zhí)行可鏈接格式的二進制文件,被廣泛地應用于電腦、嵌入式系統(tǒng)及移動終端等應用程序中,包含了三種格式,即可重定位文件(relocatableobjectfile)、可執(zhí)行文件(executablefile)以及共享文件(sharedobjectfile)。在應用程序中,ELF文件可以被調入中央處理器中直接運行,也可與多個ELF文件鏈接在一起而形成一個可執(zhí)行文件,具有強大的功能。然而,由于ELF文件中的符號表記錄了文件中的所有函數(shù)名、全局變量名以及外部引用的符號名,第三方可以用反編譯工具通過對符號表中的符號進行猜測,進而破解篡改。
發(fā)明內容基于此,有必要提供一種改善安全性的ELF文件加密方法。此外,還有必要提供一種改善安全性的ELF文件加密系統(tǒng)。一種ELF文件加密方法,包括如下步驟遍歷符號表中的符號;根據(jù)所述符號獲取與所述符號相對應的加密符;將所述加密符替換符號表中的符號。優(yōu)選地,所述根據(jù)所述符號獲取與所述符號相對應的加密符的步驟具體是根據(jù)所述符號生成加密符。優(yōu)選地,所述根據(jù)所述符號獲取與所述符號相對應的加密符的步驟還包括將所述符號及相對應的加密符記錄于符號映射表中。優(yōu)選地,所述根據(jù)所述符號生成加密符的步驟之前還包括在所述符號映射表中查找與所述符號相對應的加密符,若所述符號映射表中有與所述符號相對應的加密符,則獲取所述加密符,若所述符號映射表中沒有與所述符號相對應的加密符,則執(zhí)行所述根據(jù)所述符號生成加密符的步驟。優(yōu)選地,所述方法還包括如下步驟判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則遍歷符號表中的下一位符號。一種ELF文件加密系統(tǒng),至少包括遍歷模塊,用于遍歷符號表中的符號;加密符生成模塊,用于根據(jù)所述符號獲取與所述符號相對應的加密符;替換模塊,用于將所述加密符替換所述符號表中的符號。優(yōu)選地,所述加密符生成模塊根據(jù)所述符號生成加密符。優(yōu)選地,所述加密符生成模塊將所述符號及相對應的加密符記錄于符號映射表中。優(yōu)選地,所述加密符生成模塊還用于在所述符號映射表中查找與所述符號相對應的加密符,若符號映射表中有與所述符號相對應的加密符,則獲取所述加密符,若沒有,則3根據(jù)符號生成加密符。優(yōu)選地,所述替換模塊進一步用于判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則通知遍歷模塊遍歷符號表中的下一位符號。上述ELF文件加密方法及系統(tǒng)通過加密符對符號表中的符號進行替換,使加密后的符號難以閱讀,有效地提高了文件被惡意破解的門檻,從而在不影響應用程序功能的情況下,改善了應用程序的安全性,保護了用戶的合法權益。圖1為本發(fā)明中ELF文件加密方法的流程圖;圖2為一實施例中ELF文件加密方法的流程圖;圖3為另一實施例中ELF文件加密方法的流程圖;圖4為本發(fā)明中ELF文件加密系統(tǒng)的模塊具體實施方式圖1示出了本發(fā)明中ELF文件加密的方法流程,具體過程如下在步驟SlO中,遍歷符號表中的符號。一實施例中,遍歷符號表,逐個訪問符號表中的符號。符號表是ELF文件的重要組成部分,記錄了定位或重定位的符號以及引用時所需要的信息。在步驟S20中,根據(jù)所述符號獲取與所述符號相對應的加密符。一實施例中,根據(jù)該符號,得到與之存在映射關系相互關聯(lián)的加密符,以便于在后續(xù)的文件加密過程中提高破解ELF文件的門檻。在步驟S30中,將所述加密符替換所述符號表中的符號。一實施例中,將根據(jù)符號得到與其相對應的加密符,并將符號表中的符號替換成加密符,通過此方式,將編碼規(guī)范、命名意義明了的符號表替換成難以猜測分析的加密文件,改善了文件的安全性。圖2示出了一實施例中ELF文件加密的方法流程,具體過程如下在步驟SlOl中,遍歷符號表中的符號。一實施例中,遍歷ELF文件中的符號表,逐一訪問其中的符號。在步驟S102中,根據(jù)所述符號生成加密符。一實施例中,根據(jù)符號表中的符號,通過加密算法隨機生成與該符號相對應的加密符,以便于在后續(xù)的加密過程中混淆加密ELF文件。在步驟S103中,將所述加密符替換符號表中的符號。一實施例中,將通過加密算法計算得到的與該符號有映射關系的加密符替換符號表中的符號。該加密符對于符號而言是唯一的、一一對應的。在步驟S104中,根據(jù)所述替換的符號,判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則進入步驟S105。一實施例中,在替換了符號表中的符號后,判斷該符號是否是符號表中的最后一位符號,若是,則ELF文件符號表中的符號已經(jīng)替換完畢,完成了文件的加密,反之,則繼續(xù)遍歷該符號表中的下一位符號,以繼續(xù)末完成的加密任務,循環(huán)加密過程,直至加密符替換了符號表中與其相對應的最末位符號。在步驟S105中,遍歷符號表中的下一位符號,返回步驟S102。一實施例中,繼續(xù)遍歷符號表中的下一位符號,循環(huán)ELF文件的加密過程。圖3示出了另一實施例中ELF文件加密的方法流程,具體過程如下在步驟S201中,遍歷符號表中的符號。一實施例中,該符號標識了定位或重定位以及引用時所需要的信息。在步驟S202中,在所述符號映射表中查找與所述符號相對應的加密符,若符號映射表中有與所述符號相對應的加密符,則獲取所述加密符。一實施例中,根據(jù)所訪問的符號,查找符號映射表中關于所訪問符號的加密符記錄,如果存在該條記錄,則獲取加密符。該符號映射表是動態(tài)地記錄了符號以及與之相對應的加密符,如果符號映射表中沒有關于所遍歷符號的記錄,則通過加密算法隨機生成加密符,即對所訪問的符號隨機重新命名,以更新該符號映射表中的記錄。在步驟S203中,根據(jù)所述符號生成加密符。一實施例中,如前所述,通過加密算法隨機生成與該符號相關聯(lián)的加密符,對其進行隨機重新命名。例如,符號表中,所訪問的符號是變量名index,訪問預設的符號映射表,查找變量名index,如果沒有查找到該變量名index,則通過加密算法隨機生成加密符,對變量名index重新命名。在步驟S204中,將所述符號及相對應的加密符記錄于符號映射表中。一實施例中,將符號和通過加密算法得到的加密符保存于符號映射表當中,以便于在ELF文件的符號表加密中一旦生成了所遍歷的符號的加密符,便無須再次生成該加密符,而只需調用該符號即可。在步驟S205中,將所述加密符替換符號表中的符號。一實施例中,將通過加密算法計算得到的與該符號映射關系的加密符替換符號表中的符號。在步驟S206中,根據(jù)所述替換的符號,判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則進入步驟S206。一實施例中,在替換了符號表中的符號后,判斷該符號是否是符號表中的最后一位符號,若是,則ELF文件符號表中的符號已經(jīng)替換完畢,完成了文件的加密,反之,則繼續(xù)遍歷該符號表中的下一位符號,以繼續(xù)末完成的加密任務,循環(huán)加密過程,直至加密符替換了符號表中與其相對應的最末位符號。在步驟S207中,遍歷符號表中的下一位符號,返回步驟S203。一實施例中,繼續(xù)遍歷符號表中的下一位符號,循環(huán)ELF文件的加密過程。圖4示出了本發(fā)明中ELF文件加密系統(tǒng)的模塊圖,該系統(tǒng)包括遍歷模塊10、加密符生成模塊20以及替換模塊30,其中遍歷模塊10,用于遍歷符號表中的符號。一實施例中,遍歷模塊10遍歷ELF文件中的符號表,逐一訪問其中的符號。如前所述,符號表是ELF文件的重要組成部分,記錄了定位或重定位的符號和引用時所需要的信息。加密符生成模塊20,用于根據(jù)所述符號獲取與所述符號相對應的加密符。一實施方式中,如前所述加密符與符號表中的符號是一一對應的,加密符生成模塊20根據(jù)所述符號生成加密符。一實施中,根據(jù)符號表中的符號,通過加密算法隨機生成與該符號相關聯(lián)的加密符,以加密ELF文件。另一實施方式中,加密符生成模塊20還用于在所述符號映射表中查找與所述符號相對應的加密符,若符號映射表中有與所述符號相對應的加密符,則獲取所述加密符,若符號映射表中沒有與所述符號相對應的加密符,則根據(jù)所述符號生成加密符,并記錄于符號映射表中,以更新符號映射表。一實施例中,加密符生成模塊20根據(jù)所訪問的符號首先查找符號映射表中關于所訪問符號的加密符,如果存在該條記錄,則獲取加密符。符號映射表動態(tài)地記錄了符號以及與之相對應的加密符,如果符號映射表中沒有關于該符號的記錄,則通過加密算法隨機生成加密符,即對所訪問的符號隨機重新命名。替換模塊30,用于將所述加密符替換所述符號表中的符號。一實施例中,根據(jù)在符號表中所訪問的符號,獲取加密符,以替換符號表中的符號。另一實施例中,替換模塊30進一步用于根據(jù)所述替換的符號,判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則通知遍歷模塊10遍歷下一位符號。在替換了符號表中的符號后,判斷該符號是否是符號表中的最后一位符號,若是,則ELF文件符號表中的符號已經(jīng)替換完畢,完成了文件的加密,反之,則繼續(xù)遍歷該符號表中的下一位符號,以繼續(xù)末完成的加密任務,循環(huán)加密過程,直至加密符替換了符號表中與其相對應的最末位符號。上述ELF文件加密方法及系統(tǒng)通過加密符對符號表中的符號進行替換,使加密后的符號難以閱讀,有效地提高了惡意破解的門檻,從而在不影響就用程序功能的情況下,改善應用程序的安全性,保護了用戶的合法權益。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。權利要求1.一種ELF文件加密方法,包括如下步驟遍歷符號表中的符號;根據(jù)所述符號獲取與所述符號相對應的加密符;將所述加密符替換符號表中的符號。2.根據(jù)權利要求1所述的ELF文件加密方法,其特征在于,所述根據(jù)所述符號獲取與所述符號相對應的加密符的步驟具體是根據(jù)所述符號生成加密符。3.根據(jù)權利要求2所述的ELF文件加密方法,其特征在于,所述根據(jù)所述符號獲取與所述符號相對應的加密符的步驟還包括將所述符號及相對應的加密符記錄于符號映射表中。4.根據(jù)權利要求3所述的ELF文件加密方法,其特征在于,所述根據(jù)所述符號生成加密符的步驟之前還包括在所述符號映射表中查找與所述符號相對應的加密符,若所述符號映射表中有與所述符號相對應的加密符,則獲取所述加密符,若所述符號映射表中沒有與所述符號相對應的加密符,則執(zhí)行所述根據(jù)所述符號生成加密符的步驟。5.根據(jù)權利要求1至4中任意一項所述的ELF文件加密方法,其特征在于,所述方法還包括如下步驟判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則遍歷符號表中的下一位符號。6.一種ELF文件加密系統(tǒng),其特征在于,至少包括遍歷模塊,用于遍歷符號表中的符號;加密符生成模塊,用于根據(jù)所述符號獲取與所述符號相對應的加密符;替換模塊,用于將所述加密符替換所述符號表中的符號。7.根據(jù)權利要求6所述的ELF文件加密系統(tǒng),其特征在于,所述加密符生成模塊根據(jù)所述符號生成加密符。8.根據(jù)權利要求7所述的ELF文件加密系統(tǒng),其特征在于,所述加密符生成模塊將所述符號及相對應的加密符記錄于符號映射表中。9.根據(jù)權利要求8所述的ELF文件加密系統(tǒng),其特征在于,所述加密符生成模塊還用于在所述符號映射表中查找與所述符號相對應的加密符,若符號映射表中有與所述符號相對應的加密符,則獲取所述加密符,若沒有,則根據(jù)符號生成加密符。10.根據(jù)權利要求6至于9中任意一項所述的ELF文件加密系統(tǒng),其特征在于,所述替換模塊進一步用于判斷所述替換的符號是否為所述符號表中的最末位符號,若是,則結束,反之,則通知遍歷模塊遍歷符號表中的下一位符號。全文摘要一種ELF文件加密方法,包括如下步驟遍歷符號表中的符號;根據(jù)所述符號獲取與所述符號相對應的加密符;將所述加密符替換符號表中的符號。上述ELF文件加密方法及系統(tǒng)通過加密符對符號表中的符號進行替換,使加密后的符號難以閱讀,有效地提高了文件被惡意破解的門檻,從而在不影響應用程序功能的情況下,改善了應用程序的安全性,保護了用戶的合法權益。文檔編號G06F21/24GK102254125SQ201010180099公開日2011年11月23日申請日期2010年5月21日優(yōu)先權日2010年5月21日發(fā)明者古佳,吳志華,邱會發(fā),邱璇申請人:騰訊科技(北京)有限公司