變。以示例且非限制的方式,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接導(dǎo)線連接之類的有線介質(zhì)以及諸如聲學(xué)、RF、紅外及其他無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。
[0058]如前所述,硬件元件610和計(jì)算機(jī)可讀介質(zhì)606表示以硬件形式實(shí)現(xiàn)的指令、模塊、可編程器件邏輯和/或固定器件邏輯,其在一些實(shí)施例中可被用來(lái)實(shí)現(xiàn)本文所述的技術(shù)的至少一些方面。硬件元件可包括集成電路或芯片上系統(tǒng)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、復(fù)雜可編程邏輯器件(CPLD)以及硅或其它硬件器件中的其它實(shí)施方式的部件。在此背景下,硬件元件可操作為執(zhí)行由硬件元件體現(xiàn)的指令、模塊和/或邏輯所定義的程序任務(wù)的處理器件以及被用來(lái)存儲(chǔ)指令以供執(zhí)行的硬件器件,例如先前所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
[0059]還可采用前述內(nèi)容的組合來(lái)實(shí)現(xiàn)本文所述的各種技術(shù)和模塊。因此,可將軟件、硬件或包括操作系統(tǒng)108、應(yīng)用程序110、開發(fā)模塊112、編譯器模塊114、混淆模塊116及其它程序模塊的程序模塊實(shí)現(xiàn)為在某種形式的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上和/或由一個(gè)或多個(gè)硬件元件610體現(xiàn)的一個(gè)或多個(gè)指令和/或邏輯。可將計(jì)算設(shè)備602配置成實(shí)現(xiàn)對(duì)應(yīng)于軟件和/或硬件模塊的特定指令和/或功能。因此,模塊作為可由計(jì)算設(shè)備602作為軟件來(lái)執(zhí)行的模塊的實(shí)現(xiàn)可至少部分地用硬件來(lái)實(shí)現(xiàn),例如通過(guò)使用計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和/或處理系統(tǒng)的硬件元件610。指令和/或功能可以可由一個(gè)或多個(gè)制品(例如,一個(gè)或多個(gè)計(jì)算設(shè)備602和/或處理系統(tǒng)604)執(zhí)行/操作以實(shí)現(xiàn)本文所述的技術(shù)、模塊以及示例。
[0060]如在圖6中進(jìn)一步圖示的,示例系統(tǒng)600使得能夠?qū)崿F(xiàn)當(dāng)在個(gè)人計(jì)算機(jī)(PC)、電視設(shè)備和/或移動(dòng)設(shè)備上運(yùn)行應(yīng)用程序時(shí)針對(duì)無(wú)縫用戶體驗(yàn)的無(wú)所不在的環(huán)境。當(dāng)在利用應(yīng)用程序、玩視頻游戲、觀看視頻等的同時(shí)從一個(gè)設(shè)備過(guò)渡至下一個(gè)時(shí),服務(wù)和應(yīng)用程序基本上類似地在全部三個(gè)環(huán)境中運(yùn)行以獲得共同的用戶體驗(yàn)。
[0061]在示例系統(tǒng)600中,通過(guò)中央計(jì)算設(shè)備將多個(gè)設(shè)備互連。中央計(jì)算設(shè)備可在多個(gè)設(shè)備本地,或者可位于遠(yuǎn)離多個(gè)設(shè)備處。在一個(gè)實(shí)施例中,中央計(jì)算設(shè)備可以是通過(guò)網(wǎng)絡(luò)、因特網(wǎng)或其它數(shù)據(jù)通信鏈路而連接到多個(gè)設(shè)備的一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)的云。
[0062]在一個(gè)實(shí)施例中,此互連架構(gòu)使得能夠?qū)崿F(xiàn)將跨多個(gè)設(shè)備遞送的功能以向多個(gè)設(shè)備的用戶提供共同且無(wú)縫的體驗(yàn)。多個(gè)設(shè)備中的每一個(gè)可具有不同的物理要求和能力,并且中央計(jì)算設(shè)備使用平臺(tái)來(lái)使得能夠向設(shè)備遞送為該設(shè)備量身定制且對(duì)于所有設(shè)備而言共同的體驗(yàn)。在一個(gè)實(shí)施例中,創(chuàng)建一類目標(biāo)設(shè)備并且為一般類別的設(shè)備量身定制體驗(yàn)??砂丛O(shè)備的物理特征、使用類型或其它常見(jiàn)特性來(lái)定義一類設(shè)備。
[0063]在各種實(shí)施方式中,計(jì)算設(shè)備602可采取多種不同的配置,諸如供計(jì)算機(jī)614、移動(dòng)設(shè)備616以及電視618使用。這些配置中的每一個(gè)包括可具有一般地不同的構(gòu)造和能力的設(shè)備,并且因此可根據(jù)不同設(shè)備類別中的一個(gè)或多個(gè)來(lái)配置計(jì)算設(shè)備602。例如,可將計(jì)算設(shè)備602實(shí)現(xiàn)為計(jì)算機(jī)614類別的設(shè)備,其包括個(gè)人計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、多屏幕計(jì)算機(jī)、膝上型計(jì)算機(jī)、上網(wǎng)本等。
[0064]還可將計(jì)算設(shè)備602實(shí)現(xiàn)為移動(dòng)616類別的設(shè)備,其包括移動(dòng)設(shè)備,諸如移動(dòng)電話、便攜式音樂(lè)播放器、便攜式游戲設(shè)備、平板計(jì)算機(jī)、多屏幕計(jì)算機(jī)等。還可將計(jì)算設(shè)備602實(shí)現(xiàn)為電視618類別的設(shè)備,其包括具有或被連接到休閑觀看環(huán)境中的一般地較大的屏幕的設(shè)備。這些設(shè)備包括電視、機(jī)頂盒、游戲控制臺(tái)等。
[0065]本文所述的技術(shù)可由計(jì)算設(shè)備602的這些各種配置支持,并且不限于本文所述的技術(shù)的特定示例。這通過(guò)在計(jì)算設(shè)備602上包括開發(fā)模塊112而圖示出。還可全部或部分地通過(guò)使用分布式系統(tǒng)來(lái)實(shí)現(xiàn)開發(fā)模塊112和其它模塊的功能,諸如經(jīng)由平臺(tái)622而通過(guò)“云”620,如下所述。
[0066]云620包括和/或表示用于資源624的平臺(tái)622。平臺(tái)622對(duì)云620的硬件(例如,服務(wù)器)和軟件資源的底層功能進(jìn)行抽象。資源624可包括可在遠(yuǎn)離計(jì)算設(shè)備602的服務(wù)器上執(zhí)行計(jì)算機(jī)處理的同時(shí)利用的應(yīng)用程序和/或數(shù)據(jù)。資源624還可以包括通過(guò)因特網(wǎng)和/或通過(guò)訂戶網(wǎng)絡(luò)(諸如蜂窩式或W1-Fi網(wǎng)絡(luò))提供的服務(wù)。
[0067]平臺(tái)622可對(duì)資源和功能進(jìn)行抽象以將計(jì)算設(shè)備602與其它計(jì)算設(shè)備相連。平臺(tái)622還可用于對(duì)資源的分級(jí)進(jìn)行抽象以根據(jù)遇到對(duì)于經(jīng)由平臺(tái)622實(shí)現(xiàn)的資源624的需求而提供相應(yīng)水平的分級(jí)。因此,在互連設(shè)備實(shí)施例中,可將本文所述的功能的實(shí)施方式分布遍及系統(tǒng)600。例如,可部分地在計(jì)算設(shè)備602上以及經(jīng)由對(duì)云620的功能進(jìn)行抽象的平臺(tái)622來(lái)實(shí)現(xiàn)功能。
[0068]結(jié)論
雖然已用特定于結(jié)構(gòu)特征和/或方法動(dòng)作的語(yǔ)言描述了本發(fā)明,但應(yīng)理解的是在所附權(quán)利要求中定義的本發(fā)明不一定局限于所述特定特征或動(dòng)作。相反地,所述特定特征和動(dòng)作是作為實(shí)現(xiàn)要求保護(hù)的發(fā)明的示例形式而公開的。
【主權(quán)項(xiàng)】
1.一種方法,包括: 作為代碼編譯的一部分在編譯器內(nèi)修改用于開發(fā)項(xiàng)目的代碼以產(chǎn)生一個(gè)或多個(gè)修改以使代碼的一部分混淆;以及 由編譯器生成代碼的已編譯版本,該已編譯版本具有在編譯器內(nèi)產(chǎn)生以使所述代碼部分混淆的修改。2.如權(quán)利要求1所述的方法,進(jìn)一步包括: 獲得具有定義所述修改的命令的混淆描述;以及 對(duì)代碼應(yīng)用混淆描述以產(chǎn)生所述修改。3.如權(quán)利要求2所述的方法,進(jìn)一步包括基于所述混淆描述而選擇性地使代碼的各部分混淆,該混淆描述被配置成指定要保護(hù)的代碼的一個(gè)或多個(gè)部分和要對(duì)所述一個(gè)或多個(gè)部分進(jìn)行的一個(gè)或多個(gè)修改。4.如權(quán)利要求2所述的方法,進(jìn)一步包括作為編譯過(guò)程的一部分即時(shí)地生成一個(gè)或多個(gè)混淆算法以產(chǎn)生所述修改,其中,針對(duì)代碼的至少兩個(gè)不同部分而生成不同的混淆算法并將其應(yīng)用于所述代碼的至少兩個(gè)不同部分。5.如權(quán)利要求2所述的方法,進(jìn)一步包括: 作為代碼編譯的一部分修改代碼的多個(gè)部分包括如所述混淆描述中的命令所命令的單獨(dú)地向所述多個(gè)部分應(yīng)用不同的混淆特征和修改以使所述多個(gè)部分的保護(hù)單獨(dú)化。6.如權(quán)利要求1所述的方法,其中,所述修改包括以下各項(xiàng)中的一個(gè)或多個(gè): 代碼塊的重排、調(diào)用重定向、克隆函數(shù)的創(chuàng)建、對(duì)符號(hào)屬性和行為的改變、代碼塊的分段、替換調(diào)用、設(shè)定代碼的不同部分之間的絕對(duì)引用、到代碼中的入口點(diǎn)的修改; 插入校驗(yàn)和、驗(yàn)證器模塊或驗(yàn)證代碼; 代碼部分的加密和解密/重新加密代碼的添加;或者 將在運(yùn)行時(shí)間以已混淆形式運(yùn)行的至少一個(gè)函數(shù)的虛擬化。7.如權(quán)利要求1所述的方法,其中,所述修改包括: 對(duì)代碼進(jìn)行預(yù)處理以產(chǎn)生中間語(yǔ)言代碼,該中間語(yǔ)言代碼將用于開發(fā)項(xiàng)目的源代碼與指示要對(duì)源代碼進(jìn)行的修改的源混淆代碼進(jìn)行組合;以及 通過(guò)在代碼的編譯期間在編譯器內(nèi)對(duì)中間語(yǔ)言代碼應(yīng)用所述修改來(lái)使代碼混淆。8.存儲(chǔ)指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令在被計(jì)算設(shè)備執(zhí)行時(shí)實(shí)現(xiàn)編譯器模塊,該編譯器模塊被配置成執(zhí)行包括以下各項(xiàng)的操作: 獲得指示要保護(hù)的用于開發(fā)項(xiàng)目的源代碼部分和要進(jìn)行的以使所指示部分混淆的修改的命令,所述修改被設(shè)計(jì)成使得能夠?qū)崿F(xiàn)源代碼的堆執(zhí)行、驗(yàn)證或加密中的一個(gè)或多個(gè); 生成中間語(yǔ)言代碼,該中間語(yǔ)言代碼將源代碼與用以實(shí)現(xiàn)所述命令的代碼進(jìn)行組合;對(duì)中間語(yǔ)言代碼應(yīng)用所述命令以在由編譯器模塊在中間語(yǔ)言代碼的編譯期間根據(jù)所述命令來(lái)修改所指示部分; 編譯通過(guò)對(duì)中間語(yǔ)言代碼應(yīng)用所述命令而產(chǎn)生的已混淆代碼;以及輸出用于開發(fā)項(xiàng)目的受保護(hù)已編譯代碼,該受保護(hù)已編譯代碼具有由編譯器模塊在中間語(yǔ)言代碼的編譯期間產(chǎn)生的混淆。9.一種計(jì)算設(shè)備,包括: 處理系統(tǒng); 一個(gè)或多個(gè)模塊,可至少部分地經(jīng)由處理系統(tǒng)的硬件操作以實(shí)現(xiàn)集成開發(fā)環(huán)境(IDE),該集成開發(fā)環(huán)境被配置成: 使開發(fā)接口暴露以使得能夠創(chuàng)建用于軟件開發(fā)項(xiàng)目的源代碼; 使源代碼與通過(guò)開發(fā)接口產(chǎn)生的混淆描述相關(guān)聯(lián)以指定用于編譯器在源代碼的編譯期間進(jìn)行的以使源代碼的一個(gè)或多個(gè)所選部分混淆的修改;以及 使用混淆描述來(lái)編譯源代碼以產(chǎn)生用于開發(fā)項(xiàng)目的受保護(hù)已編譯代碼,以實(shí)現(xiàn)所指定的修改以在編譯期間使所述一個(gè)或多個(gè)所選部分混淆。10.權(quán)利要求9的計(jì)算設(shè)備,其中,所述集成開發(fā)環(huán)境(IDE)包括混淆模塊和編譯器模塊,該混淆模塊可操作用于產(chǎn)生所述混淆描述并供應(yīng)該混淆描述模塊以用于由編譯器模塊消耗,該編譯器模塊可操作用于編譯源代碼以產(chǎn)生受保護(hù)已編譯代碼,包括獲得并解釋由混淆模塊供應(yīng)的混淆描述以在編譯期間實(shí)現(xiàn)源代碼的相應(yīng)修改。
【專利摘要】描述了基于編譯器的混淆。為了用混淆來(lái)保護(hù)代碼項(xiàng)目的各部分,作為編譯過(guò)程的一部分在編譯器內(nèi)修改該代碼以產(chǎn)生使代碼混淆的一個(gè)或多個(gè)修改。生成代碼的已編譯版本,其具有在編譯器內(nèi)產(chǎn)生的修改。在一個(gè)方法中,將編譯器配置成消耗混淆描述,該混淆描述指示要保護(hù)的代碼部分并指定要對(duì)所指示部分進(jìn)行的修改??稍诰幾g過(guò)程期間執(zhí)行代碼的各種不同修改以實(shí)現(xiàn)相應(yīng)的混淆特征。例如,在編譯器內(nèi)進(jìn)行的修改可包括但不限于被設(shè)計(jì)成使得能夠?qū)崿F(xiàn)代碼的篡改檢測(cè)、反調(diào)試和/或加密的修改。
【IPC分類】G06F9/45, G06F21/14
【公開號(hào)】CN105103127
【申請(qǐng)?zhí)枴緾N201480011267
【發(fā)明人】O.A.米勒, T.岑, H.T.波斯坦奇, M.T.帕什尼亞克, K.S.佩特爾
【申請(qǐng)人】微軟技術(shù)許可有限責(zé)任公司
【公開日】2015年11月25日
【申請(qǐng)日】2014年2月26日
【公告號(hào)】EP2962193A1, US9116712, US20140245271, US20150339108, WO2014134080A1