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

用于使用返回導(dǎo)向編程的代碼混淆的方法與流程

文檔序號:11293333閱讀:354來源:國知局
用于使用返回導(dǎo)向編程的代碼混淆的方法與流程

本發(fā)明的實施例涉及代碼保護(hù),并且更具體地說,應(yīng)用返回導(dǎo)向編程(returnorientedprogramming,rop)以混淆代碼并且用于非惡意目的。



背景技術(shù):

混淆是保護(hù)算法和代碼免于公開的重要技術(shù)。應(yīng)用開發(fā)人員經(jīng)常使用此技術(shù)來保護(hù)程序中至關(guān)重要的算法,使得程序的源代碼和機器代碼難以理解。

一種現(xiàn)有的混淆技術(shù)包括增加拆分程序代碼的難度,使得程序代碼的僅一小部分會被拆分。另一種現(xiàn)有的混淆技術(shù)包括對所選指令應(yīng)用加密,使得已加密指令僅可用密鑰公開。

然而,這些現(xiàn)有的混淆技術(shù)會造成限制。使用第一技術(shù),代碼分析儀將意識到程序代碼的僅一小部分被拆分。使用第二技術(shù),人們會質(zhì)疑程序分析并且在加解密處理期間引起關(guān)注。



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

本發(fā)明的實施例涉及將返回導(dǎo)向編程(returnorientedprogramming,rop)用于非惡意目的,即,用于代碼混淆以提高安全性??梢酝ㄟ^創(chuàng)建實行原始(未被混淆)代碼的指定功能的rop代碼并且構(gòu)造能經(jīng)過加載以執(zhí)行所述rop代碼的rop有效負(fù)載來隱藏與敏感性質(zhì)的指定功能相關(guān)聯(lián)的代碼??梢杂门c指定功能不相關(guān)的雜散代碼替代原始代碼,并且提供控制流指令來加載rop有效負(fù)載以執(zhí)行rop代碼。

根據(jù)本發(fā)明的一個方面,提供一種執(zhí)行混淆代碼的方法。所述方法包括:

在具有rop嵌入式主機程序的移動設(shè)備中,響應(yīng)于調(diào)用與從所述rop嵌入式主機程序省略的客戶代碼相關(guān)聯(lián)的指定功能,檢索rop有效負(fù)載,所述rop嵌入式主機程序包含用于實行所述指定功能的rop代碼;以及

使用所述rop有效負(fù)載重新設(shè)置移動設(shè)備的存儲器寄存器,從而執(zhí)行用于實行與客戶代碼相關(guān)聯(lián)的調(diào)用功能的rop代碼。

在以上方法的一個實施例中,檢索rop有效負(fù)載包含從移動設(shè)備將獲得與調(diào)用功能相關(guān)聯(lián)的數(shù)據(jù)的請求發(fā)送到遠(yuǎn)程服務(wù)器,并且從所述服務(wù)器接收所請求的數(shù)據(jù)和rop有效負(fù)載這兩者。

在以上方法的另一個實施例中,檢索rop有效負(fù)載包含從移動設(shè)備中的存儲器設(shè)備檢索rop有效負(fù)載。

根據(jù)本發(fā)明的另一個方面,提供一種代碼混淆方法。所述方法包括:

從具有客戶代碼的主機程序代碼中識別與所述客戶代碼相關(guān)的多個片段并且確定對應(yīng)于所述片段的多個返回地址;

通過修改將存儲于存儲器寄存器中的返回地址創(chuàng)建連接片段的rop代碼,其中所述rop代碼將實行客戶代碼的指定功能;

構(gòu)造rop有效負(fù)載,所述rop有效負(fù)載包含客戶代碼所需的參數(shù)數(shù)據(jù)、片段的返回地址,以及用于重新設(shè)置存儲器寄存器以執(zhí)行rop代碼的數(shù)據(jù)段;

用雜散代碼替代主機程序代碼中的客戶代碼;

提供用于用rop有效負(fù)載重新設(shè)置存儲器寄存器的命令碼;以及

將rop有效負(fù)載存儲在存儲器設(shè)備處,其中所述rop有效負(fù)載用于在運行時被調(diào)用,從而執(zhí)行用于實行與客戶代碼相關(guān)聯(lián)的指定功能的rop代碼。

在以上方法的一個實施例中,存儲器設(shè)備位于服務(wù)器計算機處,所述服務(wù)器計算機遠(yuǎn)離將安裝有包含rop代碼的rop嵌入式主機程序的移動設(shè)備。

在以上方法的另一個實施例中,存儲器設(shè)備位于將安裝有包含rop代碼的rop嵌入式主機程序的移動設(shè)備處。

根據(jù)本發(fā)明的另一個方面,提供一種移動設(shè)備所述移動設(shè)備包括:

處理器,以及存儲器設(shè)備,所述存儲器設(shè)備具有rop嵌入式主機程序,所述rop嵌入式主機程序包含用于實行與從所述rop嵌入式主機程序省略的客戶代碼相關(guān)聯(lián)的指定功能的rop代碼,所述處理器用于:

響應(yīng)于調(diào)用所述指定功能而檢索rop有效負(fù)載;以及

使用所述rop有效負(fù)載重新設(shè)置移動設(shè)備的存儲器寄存器,從而執(zhí)行用于實行與客戶代碼相關(guān)聯(lián)的調(diào)用功能的rop代碼。

在以上設(shè)備的一個實施例中,處理器用于通過將獲得與調(diào)用功能相關(guān)聯(lián)的數(shù)據(jù)的請求發(fā)送到遠(yuǎn)程服務(wù)器并且從所述服務(wù)器接收所請求的數(shù)據(jù)和rop有效負(fù)載兩者來檢索rop有效負(fù)載。

在以上設(shè)備的另一個實施例中,處理器用于通過從移動設(shè)備中的存儲器設(shè)備檢索rop有效負(fù)載來檢索rop有效負(fù)載。

在以上設(shè)備的另一個實施例中,處理器用于在檢索rop有效負(fù)載之前通過驗證外部輸入來實行對檢索rop有效負(fù)載的授權(quán)。

附圖說明

將參考附圖詳細(xì)描述本發(fā)明,在附圖中:

圖1a示出主機程序(例如,音樂播放器);

圖1b示出待混淆的客戶代碼(例如,許可證驗證碼);

圖1c示出代碼混淆之后的圖1b的客戶代碼;

圖2示出根據(jù)本發(fā)明的一個實施例的代碼混淆方法;以及

圖3示出根據(jù)本發(fā)明的一個實施例的用于執(zhí)行混淆客戶代碼的方法。

具體實施方式

下文描述中陳述許多具體細(xì)節(jié),以對本發(fā)明各實施例進(jìn)行通徹理解。然而,本領(lǐng)域熟練技術(shù)人員將理解,可以在不具有這些具體細(xì)節(jié)中的一些或全部的情況下實踐本發(fā)明的實施例。在其它情況下,為了不多余地混淆所描述的實施例的相關(guān)方面,并未詳細(xì)地描述熟知的過程操作。在附圖中,相同參考標(biāo)號在若干視圖中始終指代相同或相似功能性或特征。

本發(fā)明的實施例公開一種使用返回導(dǎo)向編程(returnorientedprogramming,rop)的新混淆技術(shù)。

近年來rop已經(jīng)成為最有效的運行時攻擊技術(shù)之一。使用rop的攻擊者通常作為第一步驟從有效代碼序列識別片段。片段可被稱為有效代碼序列的小片段,且更具體地說,可被稱為在現(xiàn)有機器指令的中間潛在地開始并且以返回指令結(jié)束的指令序列。識別片段提供形成rop程序的基本單元。在第二步驟中,程序的控制流變?yōu)榈谝黄卧趓op程序中的地址。由于每個片段以返回指令結(jié)束,因此當(dāng)?shù)谝黄畏祷貢r,程序可以“返回”到第二片段,其中此類地址仔細(xì)準(zhǔn)備在寄存器上。如果片段含有類似上托的指令,其將從寄存器獲得參數(shù),所述參數(shù)也應(yīng)布置在寄存器上,就在所述片段的返回地址之后??傊瑀op基本上從程序中的現(xiàn)有指令中聚集有效代碼的片段,以形成實行特定功能并改變原始程序的控制流的另一個程序。

rop傳統(tǒng)上用于對易受影響的程序的惡意攻擊。對比而言,本發(fā)明的實施例采用rop用于非惡意目的,即保護(hù)和隱藏程序代碼,并且方法是在應(yīng)用開發(fā)期間嵌入rop。

圖1a到1c示出本發(fā)明可以應(yīng)用于的非限制性實例。圖1a示出具有如圖1b中所示的客戶代碼(例如,許可證驗證碼)的主機程序(例如,音樂播放器)。許可證驗證碼將被混淆,使得敵手無法例如通過逆向工程偽造新的許可證文件。圖1c示出代碼混淆之后的圖1b的客戶代碼;

圖2示出代碼混淆方法200。將參考圖1a到1c中的實例描述方法200,其中主機程序是基于安卓的,并且使用本地代碼(c/c++)寫入。

在方塊202中,識別主機程序內(nèi)的客戶代碼進(jìn)行代碼混淆。此處,客戶代碼是未被混淆的,并且主機程序呈非rop形式。

在方塊204中,分析主機程序代碼和本地庫以識別與客戶代碼相關(guān)的有用片段(rop片段)。還確定對應(yīng)于所識別片段的返回地址。

為了定位這些片段,可以開發(fā)同時支持arm架構(gòu)上的so文件和apk文件的半自動化工具。所述工具用于分析主機程序(例如,安卓應(yīng)用)、安卓系統(tǒng)中的本地庫以及安卓安裝包中的庫,并且確定對應(yīng)于所識別片段的返回地址。

在方塊206中,將所識別片段鏈接或連接在一起以創(chuàng)建rop代碼。這通過修改存儲于存儲器寄存器中的返回地址(如在方塊204中確定的)來實現(xiàn)。rop代碼在適當(dāng)?shù)臅r候執(zhí)行時將實行與客戶代碼相關(guān)聯(lián)的指定功能。

在方塊208中,構(gòu)造rop有效負(fù)載,其用于改變主機程序的控制流并且由此執(zhí)行混淆的客戶代碼(rop代碼)。

為了改變控制流,可以使用如c標(biāo)準(zhǔn)庫中定義的用于提供非本地跳轉(zhuǎn)的setjmp()和longjmp()子程序。如由jmp_buf定義,setjmp()將保存調(diào)用環(huán)境或存儲器寄存器的內(nèi)容,使得longjmp()可以恢復(fù)它們。以此方式,當(dāng)setjmp()被調(diào)用時,longjmp()“返回”到程序的狀態(tài)。因此,jmp_buf保留恢復(fù)調(diào)用環(huán)境所需的信息。

由于setjmp()保存的jmp_buf將通過堆溢出漏洞改變,因此rop有效負(fù)載應(yīng)含有(i)客戶代碼所需的參數(shù)數(shù)據(jù),(ii)所識別片段的返回地址(如先前在方塊204中確定),以及(iii)用于重新設(shè)置存儲器寄存器以執(zhí)行rop代碼的數(shù)據(jù)段。

在方塊210中,從主機程序代碼移除客戶代碼。提供或嵌入雜散代碼以替代客戶代碼。在雜散代碼之后,提供用于以rop有效負(fù)載重新設(shè)置存儲器寄存器的命令碼。具體來說,提供longjmp()子程序以重新設(shè)置調(diào)用環(huán)境并且提供改變主機程序的返回地址的機構(gòu)。

在方塊212中,對含有包含雜散代碼和rop代碼的主機程序代碼的apk文件重新封裝并簽名。apk文件相應(yīng)地分布并安裝為各種移動設(shè)備中的rop嵌入式主機程序。此類移動設(shè)備是本領(lǐng)域中已知的,并且至少包括處理器和存儲器設(shè)備,存儲器設(shè)備含有可由處理器執(zhí)行從而使得移動設(shè)備實行各種操作的指令。

在方塊214中,rop有效負(fù)載存儲于存儲器設(shè)備中,將在運行時被調(diào)用以執(zhí)行將實行與客戶代碼相關(guān)聯(lián)的指定功能的rop代碼。在一個實施例中,rop有效負(fù)載存儲于遠(yuǎn)程服務(wù)器計算機處的存儲器設(shè)備中。在另一實施例中,rop有效負(fù)載存儲于移動設(shè)備的存儲器設(shè)備中。

以下根據(jù)上文,圖3示出用于執(zhí)行混淆的客戶代碼的方法300。

在方塊302中,提供安裝有rop嵌入式主機程序的移動設(shè)備。具體來說,在rop嵌入式主機程序中,預(yù)選客戶代碼已經(jīng)以rop代碼形式混淆。當(dāng)調(diào)用與混淆的客戶代碼相關(guān)聯(lián)的指定功能(例如,如圖1a中的許可證驗證功能)時,作為響應(yīng),移動設(shè)備發(fā)送與調(diào)用功能相關(guān)聯(lián)的數(shù)據(jù)請求到遠(yuǎn)程服務(wù)器計算機。移動設(shè)備還執(zhí)行一般與調(diào)用功能不相關(guān)的雜散代碼。

在方塊304中,遠(yuǎn)程服務(wù)器以通常與調(diào)用功能相關(guān)聯(lián)的數(shù)據(jù)響應(yīng)。還從安裝有rop嵌入式主機程序的遠(yuǎn)程服務(wù)器或移動設(shè)備檢索rop有效負(fù)載。

在rop有效負(fù)載存儲于遠(yuǎn)程服務(wù)器處的存儲器設(shè)備中的一個實施例中,遠(yuǎn)程服務(wù)器以預(yù)存儲于遠(yuǎn)程服務(wù)器中的rop有效負(fù)載另外響應(yīng)。

在rop有效負(fù)載存儲于移動設(shè)備處的存儲器設(shè)備中的另一個實施例中,在調(diào)用所述功能后檢索移動設(shè)備中預(yù)存儲的rop有效負(fù)載。在此實施例中,調(diào)用混淆的客戶代碼可以是自動的(非條件性的),或使用預(yù)配置用于觸發(fā)執(zhí)行混淆的客戶代碼(條件)的外部輸入。例如,在從存儲器設(shè)備檢索rop有效負(fù)載之前,通過驗證可以從移動設(shè)備的用戶接收到的外部輸入來實行rop有效負(fù)載檢索的授權(quán)。

在方塊306中,應(yīng)用檢索到的rop有效負(fù)載來重新設(shè)置移動設(shè)備的存儲器寄存器。因此,恢復(fù)原始調(diào)用環(huán)境,并且控制流返回到主機程序,從而執(zhí)行用于實行與混淆的客戶代碼相關(guān)聯(lián)的指定功能的rop代碼。

以上公開內(nèi)容是參考基于安卓的應(yīng)用而描述。應(yīng)了解,本發(fā)明的實施例適合應(yīng)用于其它平臺,包含x86和sparc。

如將根據(jù)以上內(nèi)容了解到,本發(fā)明的實施例克服了現(xiàn)有混淆技術(shù)的限制,并且提供若干優(yōu)點和區(qū)別,包含但不限于以下:

通過使用rop,待混淆的代碼當(dāng)內(nèi)嵌于主機程序中時呈rop形式。rop嵌入式主機程序能夠被完整且成功地拆分,因此將不會引起對代碼混淆的質(zhì)疑。

通過重寫主機程序中的返回地址而改變主機程序的控制流。使用rop技術(shù)時,靜力分析將不能檢測程序(運行時概念)的返回地址。在運行時,返回地址中的一些將變?yōu)閞op片段的地址。

在某些實施例中,使用遠(yuǎn)程服務(wù)器來控制調(diào)用預(yù)選程序功能之后的特性。具體來說,服務(wù)器將含有rop片段的返回地址的rop有效負(fù)載發(fā)送到移動設(shè)備。所述有效負(fù)載不可使用主機程序的靜力分析訪問。因此,rop有效負(fù)載控制混淆的客戶代碼在運行時的調(diào)用。

使用本地代碼改變安卓應(yīng)用,尤其是嵌入機構(gòu)來修改jmp_buf或返回地址。

現(xiàn)在rop應(yīng)用于非惡意目的并且實際上用于提高安全性。由于在程序開發(fā)期間進(jìn)行rop,因此程序完全在同樣也是rop構(gòu)造者的開發(fā)人員的控制下。因此,開發(fā)人員可以修改程序的任何方面以使得rop嵌入成為可能。而現(xiàn)有rop技術(shù)應(yīng)用于惡意攻擊,其中rop構(gòu)造者無法改變程序中的指令。

可以提供用于分析安卓應(yīng)用中的片段的半自動工具,其支持將供所述應(yīng)用使用的apk文件和庫,包含安卓系統(tǒng)中的本地庫以及apk文件。

本領(lǐng)域熟練技術(shù)人員根據(jù)對本說明書的考量和對本發(fā)明的實踐將清楚其它實施例。此外,出于描述明確性的目的使用了某些術(shù)語且這些術(shù)語不會限制本發(fā)明的所揭示實施例。上文描述的實施例和特征應(yīng)視為示例性的。

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