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

基于編譯器的混淆的制作方法

文檔序號:9383063閱讀:764來源:國知局
基于編譯器的混淆的制作方法
【專利說明】
【背景技術(shù)】
[0001]與開發(fā)應(yīng)用程序及其它代碼相關(guān)聯(lián)的一個挑戰(zhàn)是保護(hù)代碼的敏感部分不被修改、禁用或逆向工程。例如,可執(zhí)行被設(shè)計成實(shí)現(xiàn)用于應(yīng)用程序模塊的電子許可和/或數(shù)字權(quán)限管理的代碼部分的保護(hù),以防止第三方圍繞代碼進(jìn)行工作而非法地使用和/或分發(fā)該應(yīng)用程序模塊。開發(fā)者可直接地在對應(yīng)用程序進(jìn)行源編碼的同時添加一些保護(hù)措施,然而,這對于開發(fā)者而言可能是相當(dāng)麻煩且耗費(fèi)時間的。另一方法涉及到在由編譯器輸出文件之后向已編譯的二進(jìn)制文件施加保護(hù)。然而,使已編譯二進(jìn)制碼混淆可以使得一些二進(jìn)制碼變得不穩(wěn)定,限制可用的混淆和代碼優(yōu)化的類型,并且增加開發(fā)過程的復(fù)雜性和時間。此外,被用于傳統(tǒng)混淆的一些技術(shù)在運(yùn)行時間或者通過磁盤上的二進(jìn)制碼的靜態(tài)分析來檢測是相當(dāng)簡單的,特別是由老練的黑客。傳統(tǒng)混淆技術(shù)的這些及其它復(fù)雜性充當(dāng)使得其低效且抑制開發(fā)者向其代碼添加有效保護(hù)的障礙。

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

[0002]描述了基于編譯器的混淆。為了用混淆來保護(hù)代碼項目的各部分,作為編譯過程的一部分在編譯器內(nèi)修改該代碼以產(chǎn)生使代碼混淆的一個或多個修改。生成代碼的已編譯版本,其具有在編譯器內(nèi)產(chǎn)生的修改。在一個方法中,將編譯器配置成消耗混淆描述,該混淆描述指示要保護(hù)的代碼部分并指定要對所指示部分進(jìn)行的修改??稍诰幾g過程期間執(zhí)行代碼的各種不同修改以實(shí)現(xiàn)相應(yīng)的混淆特征。例如,在編譯器內(nèi)進(jìn)行的修改可包括但不限于被設(shè)計成使得能夠?qū)崿F(xiàn)代碼的篡改檢測、反調(diào)試和/或加密的修改。
[0003]本
【發(fā)明內(nèi)容】
被提供用來以簡化形式介紹下面在【具體實(shí)施方式】中進(jìn)一步描述的概念的選擇。本
【發(fā)明內(nèi)容】
并不意圖標(biāo)識要求保護(hù)的主題的關(guān)鍵特征或必要特征,其也不意圖用作確定要求保護(hù)的主題的范圍的輔助。
【附圖說明】
[0004]參考附圖來描述【具體實(shí)施方式】。在圖中,附圖標(biāo)記的(多個)最左數(shù)字標(biāo)識該附圖標(biāo)記第一次在其中出現(xiàn)的圖。相同附圖標(biāo)記在本描述和圖中的不同實(shí)例中的使用可指示類似或相同的項目。
[0005]圖1是可操作用于采用基于編譯器的混淆技術(shù)的示例實(shí)施方式中的環(huán)境的圖示。
[0006]圖2是描述表示可發(fā)生以產(chǎn)生用混淆保護(hù)的已編譯代碼的操作的基于編譯器的示例混淆的圖。
[0007]圖3是描繪其中作為針對開發(fā)項目的編譯代碼的一部分產(chǎn)生用混淆保護(hù)的已編譯代碼的示例實(shí)施方式中的工序的流程圖。
[0008]圖4是描繪其中作為編譯過程的一部分對中間語言代碼進(jìn)行修改以產(chǎn)生已混淆代碼的示例實(shí)施方式中的工序的流程圖。
[0009]圖5是描繪其中經(jīng)由集成開發(fā)環(huán)境來執(zhí)行基于編譯器的混淆的示例實(shí)施方式中的工序的流程圖。
[0010]圖6圖示出可以用來實(shí)現(xiàn)本文所述的技術(shù)的實(shí)施例的示例系統(tǒng)和系統(tǒng)的部件。
【具體實(shí)施方式】
[0011]概沭
開發(fā)者使用傳統(tǒng)混淆技術(shù)向其代碼添加有效的保護(hù)以防止第三方非法地使用或分發(fā)代碼可能是困難或不可能的。在源編碼期間或者對由編譯器輸出的已編譯二進(jìn)制碼應(yīng)用的傳統(tǒng)混淆技術(shù)可提供有限的保護(hù)選項,使用在運(yùn)行時間檢測起來相當(dāng)簡單的技術(shù),和/或增加開發(fā)過程的時間/復(fù)雜性/成本。
[0012]在本文中描述了基于編譯器的混淆。為了用混淆來保護(hù)代碼項目的各部分,作為編譯過程的一部分在編譯器內(nèi)修改該代碼以產(chǎn)生使代碼混淆的一個或多個修改。生成代碼的已編譯版本,其具有在編譯器內(nèi)產(chǎn)生的修改。在一個方法中,將編譯器配置成消耗混淆描述,該混淆描述指示要保護(hù)的代碼部分并指定要對所指示部分進(jìn)行的修改??稍诰幾g過程期間執(zhí)行代碼的各種不同修改以實(shí)現(xiàn)相應(yīng)的混淆特征。例如,在編譯器內(nèi)進(jìn)行的修改可包括但不限于被設(shè)計成使得能夠?qū)崿F(xiàn)代碼的加密、反調(diào)試和/或篡改檢測的修改。
[0013]在以下討論中,首先描述可采用本文所述的基于編譯器的混淆技術(shù)的示例環(huán)境。接下來,描述圖示出基于編譯器的混淆的示例細(xì)節(jié)的示例過程流程情形。然后描述可在該示例環(huán)境以及其它環(huán)境中執(zhí)行的示例工序。因此,示例工序的執(zhí)行不限于該示例環(huán)境,并且該示例環(huán)境不限于示例工序的執(zhí)行。最后,描述可以在基于編譯器的混淆的一個或多個實(shí)施方式中采用的示例系統(tǒng)和該系統(tǒng)的部件。
[0014]示例操作環(huán)境
圖1是可操作用于采用本文所述的技術(shù)的示例實(shí)施方式中的環(huán)境100的圖示。所圖示的環(huán)境100包括經(jīng)由網(wǎng)絡(luò)106被通信耦合的計算設(shè)備102和web服務(wù)104??蓪⒂嬎阍O(shè)備102配置成訪問通過網(wǎng)絡(luò)106經(jīng)由web服務(wù)104使得可用的多種資源105 (例如,內(nèi)容和服務(wù))并與之相交互。計算設(shè)備102和web服務(wù)104每個可由范圍廣泛的計算設(shè)備實(shí)現(xiàn)。
[0015]例如,可將計算設(shè)備102配置為能夠通過網(wǎng)絡(luò)106進(jìn)行通信的計算機(jī),諸如臺式計算機(jī)、移動站、娛樂裝置、平板電腦或平板型設(shè)備、表面計算設(shè)備、被通信耦合到顯示設(shè)備的機(jī)頂盒、移動通信設(shè)備(例如,無線電話)、游戲控制臺等??蓪⒂嬎阍O(shè)備102配置為采用各種處理系統(tǒng)的任何適當(dāng)?shù)挠嬎阆到y(tǒng)和/或設(shè)備,相對于圖6的示例系統(tǒng)來討論其一些附加示例。
[0016]計算設(shè)備102被進(jìn)一步圖示為包括操作系統(tǒng)108。一般而言,操作系統(tǒng)108被配置成將計算設(shè)備102的底層功能抽象化成可在計算設(shè)備102上執(zhí)行的應(yīng)用程序110。例如,操作系統(tǒng)108可將計算設(shè)備102的處理、存儲器、網(wǎng)絡(luò)和/或顯示功能進(jìn)行抽象,使得可在不知道“如何”實(shí)現(xiàn)此底層功能的情況下編寫應(yīng)用程序110。應(yīng)用程序110例如可向操作系統(tǒng)108提供數(shù)據(jù)以由顯示設(shè)備再現(xiàn)和顯示而不知道此再現(xiàn)將如何執(zhí)行。操作系統(tǒng)108可提供應(yīng)用程序I1可調(diào)用以利用系統(tǒng)特征的各種服務(wù)、接口以及功能。設(shè)想向計算設(shè)備102提供范圍廣泛的功能的多種應(yīng)用程序110,包括但不限于瀏覽器、辦公室生產(chǎn)率應(yīng)用程序、電子郵件客戶端、多媒體管理程序、設(shè)備管理軟件、軟件開發(fā)環(huán)境和聯(lián)網(wǎng)應(yīng)用程序,僅舉幾個示例。
[0017]計算設(shè)備102還包括開發(fā)模塊112,其表示可操作用于提供用于開發(fā)應(yīng)用程序110的集成開發(fā)環(huán)境(IDE)的功能。開發(fā)模塊112—般地提供應(yīng)用程序生命周期管理,包括對于應(yīng)用程序的設(shè)計、開發(fā)、測試和/或部署的支持。開發(fā)模塊112可支持不同的編程語言并將不同的部件集成以簡化應(yīng)用程序開發(fā),諸如代碼編輯器、一個或多個編譯器、構(gòu)建自動化工具、調(diào)試器等。因此,開發(fā)模塊112提供用于開發(fā)者創(chuàng)建/編輯用于項目的源內(nèi)容/代碼并編譯該源內(nèi)容/代碼以構(gòu)建應(yīng)用程序110的功能。
[0018]根據(jù)本文所述的技術(shù),開發(fā)模塊112還可包括或者另外利用如本文所述地操作的編譯器模塊114和混淆模塊116。編譯器模塊114表示可操作用于實(shí)現(xiàn)編譯過程以將用于開發(fā)項目的源代碼文件變換成機(jī)器語言代碼和可執(zhí)行指令(例如,目標(biāo)代碼、二進(jìn)制文件、可執(zhí)行文件等)的功能。編譯器模塊114可包括多個不同的子模塊、處理步驟和/或編譯階段。例如,編譯器模塊可包括前端編譯器和后端編譯器兩者。雖然被圖示為單獨(dú)的模塊,但還可將混淆模塊116提供為編譯器模塊114的集成部件。此外,在一些實(shí)施方式中,可將開發(fā)模塊112、編譯器模塊114和/或混淆模塊116中的一個或多個配置為使得可通過網(wǎng)絡(luò)106被客戶端訪問的web服務(wù)(例如,作為“在云中”的開發(fā)服務(wù)或混淆服務(wù))。在本示例中,開發(fā)者可能能夠通過與web服務(wù)104的交互來開發(fā)應(yīng)用程序,所述web服務(wù)104提供包括代碼混淆工具/接口作為在線可用的資源105的應(yīng)用程序開發(fā)工具。
[0019]混淆模塊116表示可操作使得代碼混淆技術(shù)能夠作為編譯過程的一部分由編譯器模塊114執(zhí)行的功能。一般而言,如本文所使用的混淆指代以不同的方式修改代碼以使得其難以理解。可采用混淆來隱藏代碼的意義和目的,即使代碼被以明文攔截和查看。這創(chuàng)建針對可嘗試對代碼進(jìn)行篡改或逆向工程的“黑客”的一定水平的保護(hù)。與傳統(tǒng)技術(shù)相反,混淆在編譯過程期間發(fā)生。因此可將編譯器模塊114配置成在編譯期間調(diào)用混淆模塊116、與之相交互或者另外利用混淆模塊116以施加修改來使源代碼的至少一些部分混淆。在至少一些實(shí)施方式中,開發(fā)者可與開發(fā)模塊112和/或混淆模塊116相交互以產(chǎn)生混淆描述以指定要用混淆來保護(hù)的源代碼的特定部分以及定義用于該部分的修改。可用指令來配置該混淆描述,所述指令適合于命令編譯器模塊114在編譯期間實(shí)現(xiàn)對源代碼的指定部分的修改。設(shè)想用以使代碼混淆的各種不同種類的修改和技術(shù),相對于以下各圖來描述其示例。
[0020]已考慮了示例操作環(huán)境,現(xiàn)在考慮根據(jù)一個或多個實(shí)施例的用于基于編譯器的混淆的一些示例細(xì)節(jié)。
[0021]基于編譯器的混淆細(xì)節(jié)
以下討論描述可利用先前所述的系統(tǒng)和設(shè)備來實(shí)現(xiàn)的基于編譯器的混淆技術(shù)的實(shí)施方式細(xì)節(jié)。參考圖2中描繪的示例情形來描述基于編譯器的混淆的各方面。特別地,圖2一般地在200處描繪了關(guān)于開發(fā)模塊112的部件和操作的細(xì)節(jié),根據(jù)一些實(shí)施方式,開發(fā)模塊112可被用來通過在編譯期間對代碼進(jìn)行混淆來產(chǎn)生受保護(hù)的已編譯代碼。
[0022]在操作中,開發(fā)者可使用開發(fā)模塊112在用于應(yīng)用程序的項目中設(shè)計、定義、創(chuàng)建和編輯源代碼202 (例如,代碼模塊、內(nèi)容、腳本、圖像、式樣、注釋等)。開發(fā)模塊112可支持用一個或多個不同編程語言進(jìn)行的軟件編程。一般地,可以各種不同的編程語言、IDE、編譯器等來采用本文所述的基于編譯器的混淆技術(shù)。
[0023]作為開發(fā)項目的一部分,可調(diào)用混淆模塊116以產(chǎn)生與源代碼202相關(guān)聯(lián)的混淆描述204。在一個方法中,可使接口暴露,其使得開發(fā)者能夠進(jìn)行選擇以產(chǎn)生用于源代碼202的各部分的混淆描述204。如
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1