亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種獲得源代碼中信息的方法、裝置及系統(tǒng)的制作方法

文檔序號(hào):9922229閱讀:493來(lái)源:國(guó)知局
一種獲得源代碼中信息的方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種獲得源代碼中信息的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 代碼混淆(Obfuscated code)亦稱花指令,是將計(jì)算機(jī)程序的代碼,轉(zhuǎn)換成一種功 能上等價(jià),但是難于閱讀和理解的形式的行為。例如,編譯前的代碼中存在名稱為get_ password的函數(shù),該函數(shù)的功能是獲取某個(gè)應(yīng)用的密碼,那么,基于用戶信息的安全性考 慮,在程序發(fā)布前可通過(guò)混淆裝置使用混淆算法對(duì)其進(jìn)行代碼混淆,例如,混淆后該函數(shù)的 名稱為gvmde,進(jìn)而將混淆后的代碼進(jìn)行編譯,最后向用戶發(fā)布編譯后得到的程序,該編譯 后得到的程序是混淆后的代碼所對(duì)應(yīng)的二進(jìn)制程序。
[0003] 而用戶可以根據(jù)調(diào)試裝置可以對(duì)已發(fā)布的程序進(jìn)行調(diào)試,例如對(duì)已發(fā)布的程序按 照用戶的需求進(jìn)行修改,或者確定已發(fā)布的程序中存在的漏洞。然而,在調(diào)試過(guò)程中,編譯 后的程序中只攜帶有混淆后的代碼的信息,而混淆后的代碼的可讀性很差,例如,調(diào)試人員 不能直接從字面上確定gvmde的含義,現(xiàn)有的調(diào)試方法的效率較低。

【發(fā)明內(nèi)容】

[0004] 本發(fā)明的實(shí)施例提供一種獲得源代碼中信息的方法、裝置及系統(tǒng),提高了代碼調(diào) 試效率,使得對(duì)代碼的漏洞修補(bǔ)更加方便。
[0005] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0006] 第一方面,本發(fā)明的實(shí)施例提供一種獲得源代碼中信息的方法,包括:調(diào)試裝置獲 取混淆代碼中的第一字符串;該調(diào)試裝置從該混淆代碼中提取目標(biāo)混淆算法的標(biāo)識(shí),該目 標(biāo)混淆算法用于將源代碼中的第二字符串混淆為該第一字符串;該調(diào)試裝置根據(jù)該目標(biāo)混 淆算法的標(biāo)識(shí),在算法庫(kù)中確定該與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法,該算法庫(kù)用 于指示混淆算法的標(biāo)識(shí)與解密算法之間的對(duì)應(yīng)關(guān)系;該調(diào)試裝置采用與目標(biāo)混淆算法的標(biāo) 識(shí)對(duì)應(yīng)的解密算法,對(duì)該第一字符串進(jìn)行解密,以得到該源代碼中的第二字符串。
[0007] 可以看出,通過(guò)從算法庫(kù)中獲取混淆第一字符串時(shí)使用的混淆算法的逆算法,即 解密算法,可使調(diào)試裝置在調(diào)試過(guò)程中能夠確定出混淆代碼中的字符串所對(duì)應(yīng)的源代碼, 從而可明確混淆代碼中字符串的技術(shù)含義,并且,可直接獲得混淆前的源代碼中與第一字 符串對(duì)應(yīng)的第二字符串,這樣,當(dāng)混淆代碼中的第一字符串出現(xiàn)漏洞時(shí),該第二字符串即為 源代碼中出現(xiàn)漏洞的位置,因此,調(diào)試裝置便可以準(zhǔn)確快速的定位出源代碼中出現(xiàn)漏洞的 位置,從而提高了代碼調(diào)試效率。
[0008] 在一種可能的設(shè)計(jì)中,該算法庫(kù)中建立有混淆算法的標(biāo)識(shí)、解密算法的名稱與算 法路徑之間的對(duì)應(yīng)關(guān)系,該算法路徑用于指示該混淆算法的標(biāo)識(shí)所對(duì)應(yīng)的解密算法的存儲(chǔ) 位置。
[0009] 這樣一來(lái),上述調(diào)試裝置根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí),在算法庫(kù)中確定與該目標(biāo) 混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法,具體包括:調(diào)試裝置根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí),確定與 該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的算法路徑;調(diào)試裝置通過(guò)該算法路徑以及與該目標(biāo)混淆算法 的標(biāo)識(shí)對(duì)應(yīng)的解密算法的名稱,獲取與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法。
[0010] 也就是說(shuō),算法庫(kù)中無(wú)需直接存儲(chǔ)有與混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法,而是由 該混淆算法的標(biāo)識(shí)對(duì)應(yīng)的算法路徑指示該解密算法,從而減少維護(hù)算法庫(kù)時(shí)的復(fù)雜度,同 時(shí)可增加算法庫(kù)內(nèi)解密算法的保密性。
[0011] 在一種可能的設(shè)計(jì)中,該混淆算法的標(biāo)識(shí)包括用戶自定義的混淆算法的標(biāo)識(shí),該 解密算法包括該用戶自定義的混淆算法的逆算法,其中,該算法庫(kù)包括該用戶自定義的混 淆算法的標(biāo)識(shí)與該用戶自定義的混淆算法的逆算法之間的對(duì)應(yīng)關(guān)系。
[0012] 這樣一來(lái),由于用戶可以在算法庫(kù)中注冊(cè)自定義的自定義解密算法,而在算法庫(kù) 中只需保存自定義解密算法的自定義標(biāo)識(shí),以便于混淆裝置調(diào)用該自定義解密算法時(shí),根 據(jù)該自定義解密算法的自定義標(biāo)識(shí)查詢對(duì)應(yīng)的算法路徑,并在該算法路徑所指示的存儲(chǔ)位 置中確定與該自定義解密算法的名稱對(duì)應(yīng)的自定義解密算法,而算法庫(kù)中并不需要保存該 自定義解密算法,從而增加了混淆算法的安全性,同時(shí)使算法庫(kù)中的混淆算法多樣化。
[0013] 在一種可能的設(shè)計(jì)中,該調(diào)試裝置從該混淆代碼中提取該目標(biāo)混淆算法的標(biāo)識(shí), 包括:該調(diào)試裝置從該混淆代碼的指定全局變量中提取該目標(biāo)混淆算法的標(biāo)識(shí)。
[0014] 在一種可能的設(shè)計(jì)中,該調(diào)試裝置采用與目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法, 對(duì)該第一字符串進(jìn)行解密,得到第二字符串,包括:該調(diào)試裝置通過(guò)預(yù)置的鉤子函數(shù)中的鉤 子獲取該解密算法;該調(diào)試裝置通過(guò)該鉤子函數(shù)調(diào)用該解密算法,對(duì)該第一字符串進(jìn)行解 密,得到該第二字符串。
[0015] 第二方面,本發(fā)明實(shí)施例提供一種混淆代碼的方法,包括:混淆裝置確定源代碼中 需要進(jìn)行混淆的第二字符串;該混淆裝置從算法庫(kù)中選擇用于混淆該第二字符串的目標(biāo)混 淆算法,該算法庫(kù)用于指示混淆算法的標(biāo)識(shí)、混淆算法以及解密算法之間的對(duì)應(yīng)關(guān)系;該混 淆裝置使用該目標(biāo)混淆算法對(duì)該第二字符串進(jìn)行混淆,以得到第一字符串;該混淆裝置將 該目標(biāo)混淆算法的標(biāo)識(shí)記錄到混淆代碼中,以便于調(diào)試裝置根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí)對(duì) 應(yīng)的解密算法通過(guò)所述第一字符串獲得該第二字符串,其中,該混淆代碼為根據(jù)該算法庫(kù) 中的混淆算法對(duì)該源代碼進(jìn)行混淆后得到的代碼,該混淆代碼包括該第一字符串,該目標(biāo) 混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法用于解密該第一字符串。
[0016] 可以看出,本方案在代碼混淆過(guò)程中,通過(guò)使用算法庫(kù)的目標(biāo)混淆算法對(duì)第二字 符串進(jìn)行混淆,以得到第一字符串,并將目標(biāo)混淆算法的標(biāo)識(shí)記錄在混淆代碼中,以使得后 續(xù)調(diào)試裝置在調(diào)試過(guò)程中能夠確定出混淆代碼中的字符串所對(duì)應(yīng)的源代碼,例如,可根據(jù) 目標(biāo)混淆算法的標(biāo)識(shí)從該算法庫(kù)中確定解密第一字符串的解密算法,進(jìn)而直接確定出源代 碼中與第一字符串對(duì)應(yīng)的第二字符串,這樣,而當(dāng)混淆代碼中的第一字符串出現(xiàn)漏洞時(shí),便 可以準(zhǔn)確快速的定位出源代碼中出現(xiàn)漏洞的位置,以提高代碼調(diào)試效率。
[0017] 在一種可能的設(shè)計(jì)中,該算法庫(kù)中建立有混淆算法的標(biāo)識(shí)、混淆算法的名稱、解密 算法的名稱以及算法路徑之間的對(duì)應(yīng)關(guān)系,該算法路徑用于指示該混淆算法的標(biāo)識(shí)所對(duì)應(yīng) 的混淆算法的存儲(chǔ)位置,該存儲(chǔ)位置可位于本地存儲(chǔ)設(shè)備,也可以位于處本地存儲(chǔ)設(shè)備外 的其他存儲(chǔ)設(shè)備或者物理節(jié)點(diǎn)上;其中,該混淆裝置從算法庫(kù)中選擇用于混淆該第二字符 串的目標(biāo)混淆算法,包括:該混淆裝置從該算法庫(kù)中確定混淆該第二字符串需使用的目標(biāo) 混淆算法的標(biāo)識(shí);該混淆裝置根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí),從該算法庫(kù)中確定該目標(biāo)混淆 算法的標(biāo)識(shí)對(duì)應(yīng)的算法路徑;該混淆裝置通過(guò)該算法路徑以及與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì) 應(yīng)的目標(biāo)混淆算法的名稱,確定該第二字符串的目標(biāo)混淆算法。
[0018] 在一種可能的設(shè)計(jì)中,該目標(biāo)混淆算法包括用戶自定義的混淆算法,該目標(biāo)混淆 算法的標(biāo)識(shí)包括用該戶自定義的混淆算法的標(biāo)識(shí),該解密算法包括該用戶自定義的混淆算 法的逆算法,其中,該算法庫(kù)包括用戶自定義的混淆算法、該用戶自定義的混淆算法的標(biāo) 識(shí)、以及該用戶自定義的混淆算法的逆算法之間的對(duì)應(yīng)關(guān)系。
[0019] 這樣一來(lái),由于用戶可以在算法庫(kù)中注冊(cè)自定義的自定義混淆算法,而在算法庫(kù) 中只需保存自定義混淆算法的自定義標(biāo)識(shí),以便于混淆裝置調(diào)用該自定義混淆算法時(shí),根 據(jù)該自定義混淆算法的自定義標(biāo)識(shí)查詢對(duì)應(yīng)的算法路徑,并在該算法路徑所指示的存儲(chǔ)位 置中確定與該自定義混淆算法的名稱對(duì)應(yīng)的自定義混淆算法,而算法庫(kù)中并不需要保存該 自定義混淆算法,從而增加了混淆算法的安全性,同時(shí)使算法庫(kù)中的混淆算法多樣化。
[0020] 在一種可能的設(shè)計(jì)中,該混淆裝置使用該目標(biāo)混淆算法對(duì)該第二字符串進(jìn)行混 淆,以得到第一字符串,包括:該混淆裝置通過(guò)預(yù)置的鉤子函數(shù)的鉤子獲取該目標(biāo)混淆算 法;該混淆裝置通過(guò)該鉤子函數(shù)調(diào)用該目標(biāo)混淆算法,以對(duì)該第二字符串進(jìn)行混淆,得到該 第一字符串。
[0021 ]在一種可能的設(shè)計(jì)中,該混淆裝置將該目標(biāo)混淆算法的標(biāo)識(shí)記錄到混淆代碼中, 包括:該混淆裝置將該目標(biāo)混淆算法的標(biāo)識(shí)保存至該混淆代碼的指定全局變量中。
[0022] 第三方面,本發(fā)明實(shí)施例提供一種調(diào)試裝置,包括:獲取單元,用于獲取混淆代碼 中的第一字符串;從該混淆代碼中提取目標(biāo)混淆算法的標(biāo)識(shí),該目標(biāo)混淆算法用于將源代 碼中的第二字符串混淆為該第一字符串;確定單元,用于根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí),在算 法庫(kù)中確定該與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法,該算法庫(kù)用于指示混淆算法的標(biāo) 識(shí)與解密算法之間的對(duì)應(yīng)關(guān)系;解密單元,用于采用與目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算 法,對(duì)該第一字符串進(jìn)行解密,以得到該源代碼中的第二字符串。
[0023] 在一種可能的設(shè)計(jì)中,該算法庫(kù)中建立有混淆算法的標(biāo)識(shí)、解密算法的名稱與算 法路徑之間的對(duì)應(yīng)關(guān)系,該算法路徑用于指示該目標(biāo)混淆算法的標(biāo)識(shí)所對(duì)應(yīng)的解密算法的 存儲(chǔ)位置;其中,該確定單元,具體用于根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí),確定與該目標(biāo)混淆算 法的標(biāo)識(shí)對(duì)應(yīng)的算法路徑;通過(guò)該算法路徑以及與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法 的名稱,獲取與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法。
[0024] 在一種可能的設(shè)計(jì)中,該獲取單元,具體用于從該混淆代碼的指定全局變量中提 取該目標(biāo)混淆算法的標(biāo)識(shí)。
[0025] 在一種可能的設(shè)計(jì)中,所述解密單元,具體用于通過(guò)預(yù)置的鉤子函數(shù)中的鉤子獲 取所述解密算法;通過(guò)所述鉤子函數(shù)調(diào)用所述解密算法,對(duì)所述第一字符串進(jìn)行解密,得到 所述第二字符串。
[0026] 第四方面,本發(fā)明實(shí)施例提供一種混淆裝置,包括:確定單元,用于確定源代碼中 需要進(jìn)行混淆的第二字符串;選擇單元,用于從算法庫(kù)中選擇用于混淆該第二字符串的目 標(biāo)混淆算法,該算法庫(kù)用于指示混淆算法的標(biāo)識(shí)、混淆算法以及解密算法之間的對(duì)應(yīng)關(guān)系; 混淆單元,用于使用該目標(biāo)混淆算法對(duì)該第二字符串進(jìn)行混淆,以得到第一字符串;記錄單 元,用于將該目標(biāo)混淆算法的標(biāo)識(shí)記錄到混淆代碼中,以便于調(diào)試裝置根據(jù)該目標(biāo)混淆算 法的標(biāo)識(shí)對(duì)應(yīng)的解密算法通過(guò)所述第一字符串獲得該第二字符串,其中,該混淆代碼為根 據(jù)該算法庫(kù)中的混淆算法對(duì)該源代碼進(jìn)行混淆后得到的代碼,該混淆代碼包括該第一字符 串,該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的解密算法用于解密該第一字符串。
[0027] 在一種可能的設(shè)計(jì)中,該算法庫(kù)中建立有混淆算法的標(biāo)識(shí)、混淆算法的名稱、解密 算法的名稱以及算法路徑之間的對(duì)應(yīng)關(guān)系,該算法路徑用于指示該混淆算法的標(biāo)識(shí)所對(duì)應(yīng) 的混淆算法的存儲(chǔ)位置;其中,該選擇單元,具體用于從該算法庫(kù)中確定混淆該第二字符串 需使用的目標(biāo)混淆算法的標(biāo)識(shí);根據(jù)該目標(biāo)混淆算法的標(biāo)識(shí),從該算法庫(kù)中確定該目標(biāo)混 淆算法的標(biāo)識(shí)對(duì)應(yīng)的算法路徑;通過(guò)該算法路徑以及與該目標(biāo)混淆算法的標(biāo)識(shí)對(duì)應(yīng)的目標(biāo) 混淆算法的名稱,確定該第二字符串的目標(biāo)混淆算法。
[0028] 在一種可能的設(shè)計(jì)中,該混淆單元,用于通過(guò)預(yù)置的鉤子函數(shù)的鉤子獲取該目標(biāo) 混淆算法;通過(guò)該鉤子函數(shù)調(diào)用該目標(biāo)混淆算法,以對(duì)該第二字符串進(jìn)行混淆,得到該第一 字符串。
[0029] 在一種可能的設(shè)計(jì)中,該記錄單元,用于將該目標(biāo)混淆算法的標(biāo)識(shí)保存至該混淆 代碼的指定全局變量中。
[0030] 第五方面,本發(fā)明實(shí)施例提供一種調(diào)試裝置,包括:處理器、存儲(chǔ)器、總線和通信接 口;該存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,該處理器與該
當(dāng)前第1頁(yè)1 2 3 4 5 6 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1