版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 二進(jìn)制代碼混淆的國(guó)內(nèi)外研究(ynji)現(xiàn)狀國(guó)內(nèi)外研究(ynji)現(xiàn)狀南開大學(xué)(nn ki d xu) 賈春福 路徑模糊一種有效抵抗符號(hào)執(zhí)行的二進(jìn)制混淆技術(shù)提出了一種新的基于路徑模糊的軟件保護(hù)方法以抵抗符號(hào)執(zhí)行的逆向分析:利用條件異常代碼替換條件跳轉(zhuǎn)指令來(lái)隱藏程序的路徑分支信息,通過(guò)系統(tǒng)的異常處理機(jī)制實(shí)現(xiàn)程序的跳轉(zhuǎn),并使用不透明謂詞技術(shù)引入偽造的路徑分支來(lái)彌補(bǔ)程序在統(tǒng)計(jì)屬性上的差異。電子科技大學(xué) 吳適 基于二進(jìn)制代碼混淆的軟件保護(hù)研究提出一種新的 C2D 轉(zhuǎn)換的混淆算法基于代碼-數(shù)據(jù)欺騙的混淆算法,該算法的目的是為了在靜態(tài)分析工具中隱藏目標(biāo)基本塊及到目標(biāo)基本塊的控制流,當(dāng)反匯編器遇上條件跳轉(zhuǎn)指
2、令時(shí),跳轉(zhuǎn)指令中的目標(biāo)地址和跳轉(zhuǎn)指令緊接著的地址都會(huì)被解釋成指令。 令絕對(duì)跳轉(zhuǎn)指令(jmp,ret)后面的地址為 A,當(dāng)使用遞歸遍歷算法時(shí),若沒(méi)有其他指令跳轉(zhuǎn)到 A,則 A 不會(huì)被解釋成指令;當(dāng)使用順序掃描算法時(shí),A 地址處存在無(wú)法被解釋的指令,則會(huì)跳過(guò)對(duì) A 的反匯編。利用這兩點(diǎn)規(guī)律,將真正的控制轉(zhuǎn)移隱藏在某條指令的數(shù)據(jù)部分中,還可以將指令隱藏在代碼段的靜態(tài)數(shù)據(jù)中。西北大學(xué) 王懷軍 基于變形的二進(jìn)制代碼混淆技術(shù)研究研究并實(shí)現(xiàn)了二進(jìn)制代碼混淆保護(hù)原型系統(tǒng)MEPE,MEPE 系統(tǒng)變形部分主要包含3 方面研究?jī)?nèi)容: 1) 指令等價(jià)變形,主要通過(guò)設(shè)計(jì)指令變形的模板函數(shù),利用模板函數(shù)對(duì)原始指令進(jìn)行等價(jià)
3、變形。2) 控制流混淆,通過(guò)打亂原來(lái)指令的物理順序,利用跳轉(zhuǎn)地址表管理指令執(zhí)行順序; 3) 循環(huán)體中指令變形的控制,首先分析循環(huán)結(jié)構(gòu)對(duì)時(shí)間開銷的影響,然后提出控制循環(huán)體中指令變形和控制流混淆的方法。南開大學(xué) 王志 二進(jìn)制代碼路徑混淆技術(shù)研究提出了一種全新的線性代碼混淆策略,該策略將未解數(shù)學(xué)猜想引入到軟件的路徑信息中,將基于符號(hào)執(zhí)行和約束求解技術(shù)的逆向工程難度等價(jià)到證明未解數(shù)學(xué)猜想的難度。在代碼混淆中只使用線性操作,不使用加密函數(shù)。多項(xiàng)式等價(jià)變換、收斂值變換、固定循環(huán)次數(shù)變換和相似控制流變換是基于未解數(shù)學(xué)猜想的路徑混淆所特有的變換方式,多態(tài)和變形技術(shù)是常用的代碼變換技術(shù),由于基于未解數(shù)學(xué)猜想的路
4、徑混淆有很好的可擴(kuò)展性,這些代碼變換技術(shù)可以直接應(yīng)用到混淆后代碼中。Collberg A Taxonomy of Obfuscation Transformations.Department of Computer Science第一次針對(duì) JAVA 程序提出了代碼混淆。Collberg 在其技術(shù)報(bào)告中提出了混淆轉(zhuǎn)換的定義、混淆算法的詳細(xì)分類及其有效性評(píng)估方法(fngf),該報(bào)告中根據(jù)其分類描述了混淆轉(zhuǎn)換的一般性算法,這些算法能夠應(yīng)用于大部分流行的高級(jí)程序語(yǔ)言的代碼混淆。根據(jù) Collberg 的分類,混淆轉(zhuǎn)換可以分為詞法結(jié)構(gòu)混淆又稱布局混淆、控制流混淆、數(shù)據(jù)混淆以及針對(duì)特定反混淆器的預(yù)防性混
5、淆。Cohen Operating System Protection through Program Evolution論述了將代碼混淆作為一種技術(shù)用于增加軟件代碼的多樣性,其使用了重排指令順序,增加或者刪除跳轉(zhuǎn)指令和反內(nèi)聯(lián)函數(shù)等方法,在不改變代碼語(yǔ)義的情況下對(duì)軟件的指令或指令序列進(jìn)行替換,利用軟件代碼的多樣性增加攻擊者對(duì)軟件進(jìn)行逆向(n xin)分析和篡改的難度。C WangA security architecture for survivability mechanisms:dissertation針對(duì)靜態(tài)逆向反編譯技術(shù)提出了基于控制流退化(degeneration of contro
6、l flow)的高級(jí)語(yǔ)言代碼混淆策略,通過(guò)間接跳轉(zhuǎn)對(duì)控制流重新(chngxn)整合,并在數(shù)據(jù)流中引入指針別名操作,有效地提高了軟件代碼的復(fù)雜度,并降低了靜態(tài)逆向反編譯的精度。Linn C Obfuscation of executable code to improve resistance to staticDisassembly等人針對(duì)靜態(tài)反匯編技術(shù)提出了一種二進(jìn)制代碼混淆方案。反匯編技術(shù)是將二進(jìn)制機(jī)器代碼轉(zhuǎn)換成匯編指令,是逆向分析和推理的基礎(chǔ),常用的反匯編算法有線性掃描算法(linear sweep algorithm)和遞歸遍歷算法(recursivetraversal algorit
7、hm)。針對(duì)線性掃描算法難以區(qū)分代碼和數(shù)據(jù)的問(wèn)題,Linn 等人提出了分支反轉(zhuǎn)(branch flipping)技術(shù),在條件跳轉(zhuǎn)指令之后加入垃圾數(shù)據(jù)以阻止線性掃描算法的分析。針對(duì)遞歸遍歷算法以控制流為基礎(chǔ)進(jìn)行反匯編的特點(diǎn),Linn 等人提出了分支函數(shù)(branch functions)技術(shù),將控制流中顯而易見的直接跳轉(zhuǎn)指令和函數(shù)調(diào)用指令隱藏在分支函數(shù)中,并引入不透明謂詞(opaquepredicates)和跳轉(zhuǎn)表欺騙(jump table spoofing)技術(shù)誤導(dǎo)反匯編的遞歸遍歷算法。Wang 和 Linn 等人的混淆策略都利用了靜態(tài)逆向分析難以處理指針別名的問(wèn)題,將控制流的靜態(tài)逆向分析由線
8、性復(fù)雜度變成 NP 完全問(wèn)題。 KanzakiExploiting Self-Modification Mechanism for Program Protection利用二進(jìn)制代碼自修改機(jī)制(self-modifying mechanism)對(duì)軟件中的重要代碼進(jìn)行偽裝。首先,用不可執(zhí)行的垃圾指令對(duì)軟件原始的二進(jìn)制指令進(jìn)行偽裝;然后,在軟件執(zhí)行中利用二進(jìn)制代碼的自修改機(jī)制動(dòng)態(tài)地生成原始指令并替換偽裝代碼;最后,將已經(jīng)執(zhí)行過(guò)的原始指令再次使用垃圾指令進(jìn)行覆蓋。Birrer 利用程序碎片技術(shù)和跳轉(zhuǎn)表使混淆后的軟件二進(jìn)制代碼具有變形能力。Kanzaki 和 Birrer 等人提出的兩種代碼混淆策略隱
9、藏了軟件代碼或控制流,使其在執(zhí)行過(guò)程中才動(dòng)態(tài)的展現(xiàn)出來(lái),其混淆的對(duì)象是靜態(tài)反匯編和反編譯技術(shù)。多樣性是生物系統(tǒng)健壯的重要保證。當(dāng)前軟件系統(tǒng)大部分是同構(gòu)系統(tǒng),缺乏多樣性。Forrest Building Diverse Computer Systems. Proceedings of the6th Workshop on Hot Topics in Operating Systems提出了利用混淆堆棧數(shù)據(jù)的方式增加軟件代碼的多樣性,在保持軟件的用戶(yngh)體驗(yàn)、功能性和效率的基礎(chǔ)上,提高了軟件的抗攻擊能力。Bhatkar Address Obfuscation: an Efcient App
10、roach to Combat aBroad Range of Memory Error Exploits提出了地址混淆的策略,在 Forrest 等人的工作基礎(chǔ)上對(duì)軟件中的代碼(di m)和數(shù)據(jù)地址進(jìn)行混淆變換,進(jìn)一步提升了軟件代碼的健壯性。2007 年,Popov Binary obfuscation using signals. Proceedings of theUSENIX Security Symposium提出了一種基于Linux信號(hào)機(jī)制的二進(jìn)制代碼混淆技術(shù):使用各種產(chǎn)生異常信號(hào)的代碼替換程序中的 jmp、ret 和 call 等跳轉(zhuǎn)指令來(lái)混淆程序的執(zhí)行過(guò)程。二進(jìn)制代碼中讀寫內(nèi)存
11、、算術(shù)運(yùn)算和調(diào)用系統(tǒng)函數(shù)等操作,都有可能產(chǎn)生系統(tǒng)異常信號(hào),因此,靜態(tài)逆向分析工具很難準(zhǔn)確判定在執(zhí)行過(guò)程中二進(jìn)制代碼是否會(huì)產(chǎn)生異常信號(hào)。但是,該技術(shù)無(wú)法對(duì)二進(jìn)制代碼的路徑分支進(jìn)行混淆,因此,它不能緩解軟件執(zhí)行過(guò)程中的信息(xnx)泄露問(wèn)題。2008 年,Sharif Impeding malware analysis using conditional codeObfuscation等人提出了一種基于哈希函數(shù)代碼混淆策略,用哈希值替換路徑分支條件中的常量,利用哈希函數(shù)的單向性增加逆向工程的難度,但是,哈希函數(shù)不具有保序性,即無(wú)法保證當(dāng) x y 時(shí),Hash(x) Hash(y)成立。因此,該混淆
12、策略具有局限性,只能保護(hù)等于關(guān)系的路徑分支條件。2011 年,F(xiàn)alcarin Exploiting Code Mobility for Dynamic BinaryObfuscation等人將軟件核心代碼放到網(wǎng)絡(luò)上的一個(gè)可信實(shí)體中,該實(shí)體在攻擊者的控制之外,利用代碼的流動(dòng)性使軟件在執(zhí)行過(guò)程中動(dòng)態(tài)獲得這些代碼,減少攻擊者對(duì)軟件整個(gè)二進(jìn)制代碼的能見度,從而限制攻擊者的知識(shí)并阻止其逆向工程。2011 年,Ceccato Remote Software Protection Using Orthogonal Replacement 等人提出了基于正交替換(orthogonal replacement
13、)的客戶端混淆策略,通過(guò)設(shè)置客戶端代碼的有效期,軟件客戶端在運(yùn)行過(guò)程中與遠(yuǎn)程可信服務(wù)器進(jìn)行頻繁的代碼替換,使軟件代碼不斷的更新,增加攻擊者進(jìn)行逆向工程的難度。Falcarin 和 Ceccato 提出的混淆策略都是基于網(wǎng)絡(luò)交互的,在不可信主機(jī)上運(yùn)行的軟件代碼都是不完整的,軟件的執(zhí)行過(guò)程需要由遠(yuǎn)程可信服務(wù)器決定,而且每次執(zhí)行的代碼都是定制的,這樣迫使攻擊者不斷面對(duì)軟件的變化,增加逆向工程的復(fù)雜度。而且,本地代碼的不完整性也干擾了攻擊者對(duì)軟件行為的靜態(tài)預(yù)測(cè)能力。但是,由于網(wǎng)絡(luò)帶寬和延遲的限制,應(yīng)用程序與可信的遠(yuǎn)程服務(wù)器的頻繁交互過(guò)程將致使軟件的運(yùn)行效率遠(yuǎn)遠(yuǎn)低于本地執(zhí)行,因此大部分軟件還是以二進(jìn)制本
14、地代碼形式發(fā)布,服務(wù)器端運(yùn)行保護(hù)(protection byserver-side execution)并非對(duì)所有應(yīng)用程序都適用。二代碼(di m)混淆技術(shù)的分類Collberg 等人根據(jù)各種代碼混淆技術(shù)變換對(duì)象的不同將混淆分為四類(s li):布局混淆、數(shù)據(jù)混淆、控制混淆和預(yù)防混淆。布局(bj)混淆布局混淆(layout obfuscation)是指刪除或者混淆軟件源代碼或者中間代碼中與執(zhí)行無(wú)關(guān)的輔助文本信息,增加攻擊者閱讀和理解代碼的難度。軟件源代碼中的注釋文本、調(diào)試信息可以直接刪除,用不到的方法和類等代碼或數(shù)據(jù)結(jié)構(gòu)也可以刪除,這樣即可以使攻擊者難以理解代碼的語(yǔ)義,也可以減小軟件體積,提高
15、軟件裝載和執(zhí)行的效率。軟件代碼中的常量名、變量名、類名和方法名等標(biāo)識(shí)符的命名規(guī)則和字面意義有利于攻擊者對(duì)代碼的理解,布局混淆通過(guò)混淆這些標(biāo)識(shí)符增加攻擊者對(duì)軟件代碼理解的難度。標(biāo)識(shí)符混淆的方法有多種,例如哈希函數(shù)命名、標(biāo)識(shí)符交換和重載歸納等。哈希函數(shù)命名是簡(jiǎn)單地將原來(lái)標(biāo)識(shí)符的字符串替換成該字符串的哈希值,這樣標(biāo)識(shí)符的字符串就與軟件代碼不相關(guān)了;標(biāo)識(shí)符交換是指先收集軟件代碼中所有的標(biāo)識(shí)符字符串,然后再隨機(jī)地分配給不同的標(biāo)識(shí)符,該方法不易被攻擊者察覺(jué);重載歸納是指利用高級(jí)編程語(yǔ)言命名規(guī)則中的一些特點(diǎn),例如在不同的命名空間中變量名可以相同,使軟件中不同的標(biāo)識(shí)符盡量使用相同的字符串,增加攻擊者對(duì)軟件源代
16、碼的理解難度。布局混淆是最簡(jiǎn)單的混淆方法,它不改變軟件的代碼和執(zhí)行過(guò)程。由于攻擊者通常無(wú)法直接獲取軟件的源代碼,因而布局混淆的保護(hù)能力較弱。布局混淆常用于 Java 字節(jié)碼和.Net 中間代碼 MSIL 的混淆,例如 Crema、SourceGuard、yGuard和 Jaurora等。數(shù)據(jù)混淆數(shù)據(jù)混淆是指在不影響軟件功能的前提下,變換軟件代碼中的數(shù)據(jù)或數(shù)據(jù)格式,增加軟件代碼的復(fù)雜度。根據(jù)混淆方式不同,數(shù)據(jù)混淆可以分為存儲(chǔ)和編碼變換、聚集變換和次序變換等。存儲(chǔ)和編碼變換通過(guò)混淆軟件代碼中變量的存儲(chǔ)方式和編碼方式來(lái)消除變量的含義,使它們的操作和用途變得晦澀難懂。主要的混淆方法包括以下幾種:(1)
17、分割變量,把一個(gè)二進(jìn)制變量v拆分成兩個(gè)二進(jìn)制變量p和q,然后通過(guò)函數(shù)建立 p、q 與 v 之間的映射關(guān)系,并建立基于新的變量編碼結(jié)構(gòu)的運(yùn)算規(guī)則。(2)將簡(jiǎn)單的標(biāo)量變成復(fù)雜的對(duì)象結(jié)構(gòu),例如,在 Java 語(yǔ)言中可以將整型變量變成與整型相關(guān)的對(duì)象結(jié)構(gòu)。(3)改變變量的生命周期,例如,將一個(gè)局部變量變成一個(gè)全局變量。(4)將靜態(tài)數(shù)據(jù)用函數(shù)表示,例如,軟件代碼中的字符串常量用一個(gè)函數(shù)來(lái)動(dòng)態(tài)構(gòu)造等。(5)修改編碼方式,例如,用更復(fù)雜的等價(jià)的多項(xiàng)式替換數(shù)組變量原始的下標(biāo)表達(dá)式等。聚集變換是指通過(guò)將多個(gè)數(shù)據(jù)聚集在一起形成新的數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)隱藏原始數(shù)據(jù)格式的目的。聚集變換常用于混淆面向?qū)ο蟮母呒?jí)語(yǔ)言,聚集方式
18、有數(shù)組聚集和對(duì)象聚集兩種,聚集方法有以下幾種:(1)合并標(biāo)量變量,將多個(gè)變量 V1,Vn合并成一個(gè)變量 Vm,例如將兩個(gè)32 位的整數(shù)變量 x 和 y 合并成一個(gè) 64 位的整數(shù)變量 z,其合并函數(shù)是 z = 2 32x +y。(2)重新構(gòu)造數(shù)組來(lái)混淆(hnxio)數(shù)組運(yùn)算,重構(gòu)數(shù)組的方法有很多種,例如,將一個(gè)數(shù)組分割成兩個(gè)小的數(shù)組,將多個(gè)數(shù)組合并成一個(gè)大數(shù)組,將一維數(shù)組“折疊(zhdi)”成多維數(shù)組,將多維數(shù)組“壓平(y pn)”成一維數(shù)組等。(3)修改類的繼承關(guān)系也可以增加代碼的復(fù)雜度,可以把兩個(gè)無(wú)關(guān)的類進(jìn)行聚集,生成一個(gè)新的無(wú)意義的父類,也可以把一個(gè)類拆分成兩個(gè)類,其關(guān)鍵是要增加軟件代碼
19、中類的繼承深度,因?yàn)檐浖膹?fù)雜度與類的繼承深度成正比。3.控制流混淆控制混淆的目的是增加軟件中控制流的復(fù)雜度,其不修改代碼中的計(jì)算部分,只是對(duì)控制結(jié)構(gòu)進(jìn)行修改,根據(jù)對(duì)控制流的修改方式不同可以將控制流混淆分為聚集變換、次序變換和計(jì)算變換等類型。聚集變換是指通過(guò)破壞代碼間的邏輯關(guān)系實(shí)現(xiàn)控制流混淆,其基本思想是把邏輯上相關(guān)的代碼拆分開,把它們分散到程序的不同地方,或者把不相關(guān)的代碼聚集到一起,例如,聚集到一個(gè)函數(shù)中,其主要混淆方法有以下幾種:(1)內(nèi)嵌函數(shù)的方法,用函數(shù)體內(nèi)部的代碼去替換程序中該函數(shù)的調(diào)用語(yǔ)句,這樣就可以減少一個(gè)函數(shù)的定義,其內(nèi)部代碼整體的語(yǔ)義也就變的不如之前清晰了。外提函數(shù)的方法,
20、該方法與內(nèi)嵌函數(shù)正好相反,它把沒(méi)有任何關(guān)系的代碼合在一起創(chuàng)造一個(gè)新的函數(shù),該函數(shù)沒(méi)有任何實(shí)際意義,但是,在程序執(zhí)行過(guò)程中卻被多次調(diào)用,從而使攻擊者產(chǎn)生誤解,使他認(rèn)為該函數(shù)很有意義。(3)克隆函數(shù)的方法,將一個(gè)函數(shù)克隆成多個(gè)函數(shù),新生成函數(shù)的功能是一致的,但是名稱和實(shí)現(xiàn)的細(xì)節(jié)有些不同,可以調(diào)用其中的任何一個(gè)函數(shù)來(lái)替換原來(lái)的函數(shù),這樣可以有效增加攻擊者逆向分析的工作量。(4)循環(huán)變換是指通過(guò)對(duì)循環(huán)退出條件的等價(jià)變換使循環(huán)的結(jié)構(gòu)體變得復(fù)雜,例如循環(huán)的模塊化、循環(huán)展開和循環(huán)分裂等。(5)交叉合并方法的基本思想是把不同功能的函數(shù)合并成一個(gè)函數(shù),隨著函數(shù)功能的不斷增加,其代碼整體的意義就變得越來(lái)越模糊不清
21、了,由此增加了攻擊者的理解難度。其實(shí)現(xiàn)方式比較簡(jiǎn)單,可以通過(guò)增加一個(gè)標(biāo)識(shí)參數(shù)來(lái)區(qū)分不同的功能。通常語(yǔ)義相關(guān)的代碼在源代碼中的物理位置也相近,例如功能相似或有依賴關(guān)系的函數(shù)會(huì)連續(xù)的放在同一個(gè)文件中或同一段代碼中,這樣有利于代碼的閱讀和理解。次序變換的目的是將語(yǔ)義相關(guān)的代碼分散到不同的位置,盡量增加代碼的上下文無(wú)關(guān)性,實(shí)現(xiàn)方法包括對(duì)文件中的函數(shù)重新排序,循環(huán)體或函數(shù)體內(nèi)部的語(yǔ)句塊重新排序,以及語(yǔ)句塊內(nèi)部的語(yǔ)句重新排序等。計(jì)算混淆是指引入混淆計(jì)算代碼來(lái)隱藏真實(shí)的控制流,該方法的應(yīng)用效果和保護(hù)強(qiáng)度都很好,其實(shí)現(xiàn)方法包括引入不透明謂詞、插入垃圾代碼、擴(kuò)展循環(huán)條件、代碼并行化和跳轉(zhuǎn)表等。另一種重要的控制流
22、混淆技術(shù)就是不透明謂詞技術(shù)(opaquepredicate)。Collberg 等人首先對(duì)不透明謂詞技術(shù)在代碼混淆中的應(yīng)用做了比較完整的描述。如果在程序中的某一點(diǎn),一個(gè)謂詞的輸出對(duì)于混淆者是可知的(基于先驗(yàn)知識(shí)),而對(duì)于其他人卻是難以獲知的,則稱該謂詞為不透明謂詞。不透明謂詞技術(shù)所引入的路徑分支并不影響代碼的實(shí)際執(zhí)行順序,新插入的路徑分支條件恒為真,或者恒為假,因此,這些路徑分支不改變軟件代碼的語(yǔ)義,只是使代碼的控制流變得復(fù)雜且難以分析。插入垃圾代碼是指利用不透明謂詞技術(shù),在其不可達(dá)分支上插入垃圾代碼,增加代碼靜態(tài)分析的復(fù)雜度。因?yàn)椋诔绦驁?zhí)行過(guò)程中,這些垃圾代碼永遠(yuǎn)不會(huì)被執(zhí)行到的,因此,垃圾代碼與軟件的語(yǔ)義無(wú)關(guān),并不影響軟件的執(zhí)行結(jié)果。擴(kuò)展循環(huán)條件的基本思想是在循環(huán)的退出條件中,加入恒為真或者恒為假的不透明謂詞PT和PF,使循環(huán)結(jié)構(gòu)變得更為復(fù)雜和難以分析。實(shí)際上,這些不透明謂詞并不影響循環(huán)的實(shí)際執(zhí)行次數(shù),因此,也不會(huì)改變程序的語(yǔ)義。將可歸約控制流圖轉(zhuǎn)化為不可歸約控制流圖是指利用高級(jí)語(yǔ)言與低級(jí)語(yǔ)言表達(dá)能力上的差異,引入一些高級(jí)語(yǔ)言沒(méi)有對(duì)應(yīng)表達(dá)方式的控制流結(jié)構(gòu)來(lái)增加攻擊者
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《立秋健康養(yǎng)生》課件
- 2021學(xué)年天津市楊村一中、寶坻一中等四校高一下學(xué)期期末聯(lián)考地理試題
- 小學(xué)一年級(jí)20以內(nèi)數(shù)學(xué)口算練習(xí)題大全
- 國(guó)際貿(mào)易試卷答案解讀
- 幼兒園傳染病預(yù)防工作領(lǐng)導(dǎo)小組
- 年度第一學(xué)期歷史科期末考試試卷
- 高考語(yǔ)文分鐘專題突破(2):字形
- 北京市大興區(qū)2022-2023學(xué)年高三上學(xué)期期末試卷英語(yǔ)試題
- 餐飲娛樂(lè)場(chǎng)所保安工作經(jīng)驗(yàn)
- 能源行業(yè)話務(wù)員工作心得
- 港區(qū)船塢工程施工組織設(shè)計(jì)
- 2024年北京平谷區(qū)初三九年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 2024年新人教版道德與法治七年級(jí)上冊(cè)全冊(cè)教案(新版教材)
- 初中物理期末復(fù)習(xí)+專題5+綜合能力題+課件++人教版物理九年級(jí)全一冊(cè)
- 2024年國(guó)開電大 統(tǒng)計(jì)學(xué)原理 形成性考核冊(cè)答案
- 幼兒園大班語(yǔ)言課件:不怕冷的大衣
- 2024年1月國(guó)開電大法律事務(wù)??啤镀髽I(yè)法務(wù)》期末考試試題及答案
- 2024全國(guó)能源行業(yè)火力發(fā)電集控值班員理論知識(shí)技能競(jìng)賽題庫(kù)(多選題)
- 因式分解(分組分解法)專項(xiàng)練習(xí)100題及答案
- 冶煉煙氣制酸工藝設(shè)計(jì)規(guī)范
- 《上帝擲骰子嗎:量子物理史話》超星爾雅學(xué)習(xí)通章節(jié)測(cè)試答案
評(píng)論
0/150
提交評(píng)論