




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、封包加密解密-01 網(wǎng)絡(luò)游戲客戶端與服務(wù)器之間需要數(shù)據(jù)交換處理,數(shù)據(jù)包通過TCP網(wǎng)絡(luò)協(xié)議進(jìn)行傳送,這里我們稱數(shù)據(jù)包為封包.之前有教程介紹了如何使用模塊中的功能進(jìn)行封包攔截,修改,替換等功能.本章將完全講解如何對(duì)封包的加密,解密技術(shù). 為什么需要解密封包呢?除非那些封包是明文的(即沒有加密處理過),否則就得解密,只有解密出來了數(shù)據(jù),才能更清楚的了解游戲是如何交換數(shù)據(jù)處理,分析出封包數(shù)據(jù)才能夠做出脫機(jī)外掛,完全脫離游戲客戶端,模擬一個(gè)客戶端來與游戲服務(wù)器連接,做你一切想做的事都沒問題.所以封包加密解密技術(shù)是脫機(jī)外掛的第一前提條件.即使不做脫機(jī)外掛,封包技術(shù)仍然比CALL技術(shù)更有用處.學(xué)過前章后大家
2、應(yīng)該也知道分析CALL,找CALL,調(diào)CALL都不是件容易的事.若能完全解密封包就可以減少或不需要CALL,模擬,內(nèi)存操作了. 有加密就得有解密,有解密當(dāng)然要有加密.這是相對(duì)立的.對(duì)封包數(shù)據(jù)進(jìn)行加密與解密的函數(shù)過程,稱為算法.那封包加密解密技術(shù)容易嗎?比較諷刺的就是,90%以上的網(wǎng)絡(luò)游戲的封包都是很容易搞定了.為什么呢?如果算法復(fù)雜了的話,會(huì)多占CPU性能,而游戲服務(wù)器要處理的工作很多,不能把性能全用在加密解密上.舉個(gè)簡(jiǎn)單的例子,游戲服務(wù)器若同時(shí)連接在線的玩家有十萬人的話,這些玩家在聊天,打怪,走路等都會(huì)產(chǎn)生封包,若算法過于復(fù)雜,服務(wù)器就很難同時(shí)處理得了這么多玩家的封包,何況還得處理數(shù)據(jù)庫中的
3、數(shù)據(jù)呢.出于服務(wù)器的性能考慮,所以若想同時(shí)能在線更多玩家,就不能進(jìn)行復(fù)雜的算法來加密封包.不然就得限制減少能同時(shí)在線的玩家,不然游戲服務(wù)器會(huì)一卡一卡的,導(dǎo)致所有玩家都玩起來.而還有很多的游戲在設(shè)計(jì)時(shí),為了減少服務(wù)器的負(fù)擔(dān),不但算法簡(jiǎn)單,還放松了很多的一些數(shù)據(jù)驗(yàn)證處理.最終漏洞百出,以致于產(chǎn)生了全屏吸怪,穿墻,復(fù)制,無敵等等各種變態(tài)外掛. 基本上游戲的加密解密算法,都是采用簡(jiǎn)單的位運(yùn)算.位就是比特位,簡(jiǎn)單的說,只是二進(jìn)制數(shù)據(jù)運(yùn)算處理罷了.所以有必要了解一些常見的位運(yùn)算匯編指令.在匯編那章的指令那節(jié),有過一些指令的介紹,這里再介紹一下幾個(gè)重中之重的指令.一加減指令 加法指令 ADD (ADD Bi
4、nary Numbers Instruction) 指令的格式:ADD 寄存器/內(nèi)存地址, 寄存器/內(nèi)存地址/立即數(shù) 受影響的標(biāo)志位:AF、CF、OF、PF、SF和ZF 指令的功能是把源操作數(shù)的值加到目的操作數(shù)中。 加1指令 INC (Increment by 1 Instruction) 指令的格式:INC 寄存器/內(nèi)存地址 受影響的標(biāo)志位:AF、OF、PF、SF和ZF,不影響CF指令的功能是把操作數(shù)的值加1。 減法指令 SUB (Subtract Binary Values Instruction)指令的格式:SUB 寄存器/內(nèi)存地址, 寄存器/內(nèi)存地址/立即數(shù) 受影響的標(biāo)志位:AF、CF
5、、OF、PF、SF和ZF指令的功能是從目的操作數(shù)中減去源操作數(shù)。 減1指令 DEC (Decrement by 1 Instruction)指令的格式:DEC 寄存器/內(nèi)存地址 受影響的標(biāo)志位:AF、OF、PF、SF和ZF,不影響CF指令的功能是把操作數(shù)的值減去1。二、乘法指令計(jì)算機(jī)的乘法指令分為無符號(hào)乘法指令和有符號(hào)乘法指令,它們的唯一區(qū)別就在于:數(shù)據(jù)的最高位是作為“數(shù)值”參與運(yùn)算,還是作為“符號(hào)位”參與運(yùn)算。乘法指令的被乘數(shù)都是隱含操作數(shù),乘數(shù)在指令中顯式地寫出來。 CPU 會(huì)根據(jù)乘數(shù)是8位、16位,還是32位操作數(shù),來自動(dòng)選用被乘數(shù): AL 、 AX 或 EAX 。指令的功能是把顯式操作
6、數(shù)和隱含操作數(shù)相乘,并把乘積存入相應(yīng)的寄存器中。 無符號(hào)數(shù)乘法指令 MUL (Unsigned Multiply Instruction)指令的格式:MUL 寄存器/內(nèi)存地址 受影響的標(biāo)志位:CF和OF(AF、PF、SF和ZF無定義)指令的功能是把顯式操作數(shù)和隱含操作數(shù)(都作為無符號(hào)數(shù))相乘,所得的乘積按下表的對(duì)應(yīng)關(guān)系存放。下表乘法指令中乘數(shù)、被乘數(shù)和乘積的對(duì)應(yīng)關(guān)系乘數(shù)位數(shù)隱含的被乘數(shù)乘積的存放位置舉例8位ALAXMUL BL16位AXDX-AXMUL BX32位EAXEDX-EAXMUL ECX(圖5.2) 有符號(hào)數(shù)乘法指令 IMUL (Signed Integer Multiply Ins
7、truction)指令的格式:IMUL寄存器/內(nèi)存地址該指令的功能是把顯式操作數(shù)和隱含操作數(shù)相乘,所得的乘積按表5.2的對(duì)應(yīng)關(guān)系存放。IMUL寄存器, 立即數(shù)其寄存器必須是16位/32位通用寄存器,其計(jì)算方式為:寄存器 寄存器 × 立即數(shù)IMUL寄存器, 寄存器, 立即數(shù)其寄存器只能是16位通用寄存器,其計(jì)算方式為:寄存器 1 寄存器 2 ×立即數(shù) 或 寄存器 1 內(nèi)存地址×立即數(shù)IMUL寄存器, 寄存器/內(nèi)存地址其寄存器必須是16位/32位通用寄存器,其計(jì)算方式為:寄存器 1 寄存器 1 ×寄存器 2 或寄存器 1 寄存器 1 ×內(nèi)存地址受影
8、響的標(biāo)志位:CF和OF(AF、PF、SF和ZF無定義)在指令格式24中,各操作數(shù)的位數(shù)要一致。如果乘積超過目標(biāo)寄存器所能存儲(chǔ)的范圍,則系統(tǒng)將置溢出標(biāo)志OF為1。三、除法指令除法指令的被除數(shù)是隱含操作數(shù),除數(shù)在指令中顯式地寫出來。 CPU 會(huì)根據(jù)除數(shù)是8位、16位,還是32位,來自動(dòng)選用被除數(shù) AX 、 DX-AX ,還是 EDX-EAX 。除法指令功能是用顯式操作數(shù)去除隱含操作數(shù),可得到商和余數(shù)。當(dāng)除數(shù)為0,或商超出數(shù)據(jù)類型所能表示的范圍時(shí),系統(tǒng)會(huì)自動(dòng)產(chǎn)生0號(hào)中斷。 無符號(hào)數(shù)除法指令 DIV (Unsigned Divide Instruction)指令的格式:DIV 寄存器/內(nèi)存地址 指令的
9、功能是用顯式操作數(shù)去除隱含操作數(shù)(都作為無符號(hào)數(shù)),所得商和余數(shù)按下表的對(duì)應(yīng)關(guān)系存放。指令對(duì)標(biāo)志位的影響無定義。 有符號(hào)數(shù)除法指令 IDIV (Signed Integer Divide Instruction)指令的格式:IDIV 寄存器/內(nèi)存地址 受影響的標(biāo)志位:AF、CF、OF、PF、SF和ZF指令的功能是用顯式操作數(shù)去除隱含操作數(shù)(都作為有符號(hào)數(shù)),所得商和余數(shù)的對(duì)應(yīng)關(guān)系見表。下面表除法指令除數(shù)、被除數(shù)、商和余數(shù)的對(duì)應(yīng)關(guān)系除數(shù)位數(shù)隱含的被除數(shù)商余數(shù)舉例8位AXALAHDIV BH16位DX-AXAXDXDIV BX32位EDX-EAXEAXEDXDIV ECX四、邏輯運(yùn)算指令邏輯運(yùn)算指
10、令是另一組重要的指令,它包括:邏輯與( AND )、邏輯或( OR )、邏輯非( NOT )和異或指令( XOR ),邏輯運(yùn)算指令也是經(jīng)常使用的指令。1、邏輯與操作指令A(yù)ND(Logical AND Instruction)指令的格式:AND寄存器/內(nèi)存地址, 寄存器/內(nèi)存地址/立即數(shù) 受影響的標(biāo)志位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)指令的功能:是把源操作數(shù)中的每位二進(jìn)制與目的操作數(shù)中的相應(yīng)二進(jìn)制進(jìn)行邏輯“與操作”,操作結(jié)果存入目標(biāo)操作數(shù)中。例已知(BH)=67H,要求把其的第0、1和5位置為0。解:可以構(gòu)造一個(gè)立即數(shù),其第0、1和5位的值為0,其它位的值為1,該立即數(shù)即
11、為:0DCH或11011100B,然后用指令" AND BH, 0DCH "來實(shí)現(xiàn)此功能。只有對(duì)應(yīng)的1和1才等于1.其它全部為0 : 0和1=0 1和0=0 0和0=0 匯編 AND 指令等于易語言里的 位與() 和 模塊里的 AND_() .2 、邏輯或操作指令OR(Logical OR Instruction)指令的格式:OR寄存器/內(nèi)存地址, 寄存器/內(nèi)存地址/立即數(shù) 受影響的標(biāo)志位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)指令的功能:是把源操作數(shù)中的每位二進(jìn)制與目的操作數(shù)中的相應(yīng)二進(jìn)制進(jìn)行邏輯"或操作",操作結(jié)果存入目標(biāo)
12、操作數(shù)中。例已知(BL)=46H,要求把其的第1、3、4和6位置為1。解:構(gòu)造一個(gè)立即數(shù),使其第1、3、4和6位的值為1,其它位的值為0,該立即數(shù)即為:5AH或01011010B,然后用指令"OR BL, 5AH"來實(shí)現(xiàn)此功能。只有對(duì)應(yīng)的0和0才等于0.其它全部為1 0和1=1 1和0=1 1和1=1 匯編 OR 指令等于易語言里的 位或() 和 模塊里的 OR_() .3、邏輯非操作指令NOT(Logical NOT Instruction)指令的格式:NOT寄存器/內(nèi)存地址 其功能:是把操作數(shù)中的每位變反,即:10,01。指令的執(zhí)行不影響任何標(biāo)志位。例已知(AL)=46
13、H,執(zhí)行指令“NOTAL”后,AL的值是什么?解:執(zhí)行該指令后,(AL)=0B9H。該指令只是把二進(jìn)制位反過來而已 匯編 NOT 指令等于易語言里的 位取反() 和 模塊里的 NOT_() .4、邏輯異或操作指令XOR(Exclusive OR Instruction)指令的格式:XOR寄存器/內(nèi)存地址, 寄存器/內(nèi)存地址/立即數(shù) 受影響的標(biāo)志位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)指令的功能:是把源操作數(shù)中的每位二進(jìn)制與目的操作數(shù)中的相應(yīng)二進(jìn)制進(jìn)行邏輯"異或操作",操作結(jié)果存入目標(biāo)操作數(shù)中。例已知(AH)=46H,要求把其的第0、2、5和7位的二進(jìn)制值變
14、反。解:構(gòu)造一個(gè)立即數(shù),使其第0、2、5和7位的值為1,其它位的值為0,該立即數(shù)即為:0A5H或10100101B,然后再用指令"XOR AH, 0A5H"來實(shí)現(xiàn)此功能。使用XOR運(yùn)行后,只要對(duì)應(yīng)的位相同時(shí)為0 ,0和0=0 1和1=0 對(duì)應(yīng)兩位不同時(shí)為1 0和1=1 1和0=1匯編 XOR 指令等于易語言里的 位異或() 和 模塊里的 XOR_() . 五、移位操作指令移位操作指令是一組經(jīng)常使用的指令,它包括算術(shù)移位、邏輯移位、雙精度移位、循環(huán)移位和帶進(jìn)位的循環(huán)移位等五大類。移位指令都有指定移動(dòng)二進(jìn)制位數(shù)的操作數(shù),該操作數(shù)可以是立即數(shù)或CL的值。在8086中,該立即數(shù)只能
15、為 1 ,但在其后的 CPU 中,該立即數(shù)可以是 1··31 之內(nèi)的數(shù)。1 、算術(shù)移位指令算術(shù)移位指令有:算術(shù)左移 SAL (Shift Algebraic Left)和算術(shù)右移 SAR (Shift Algebraic Right)。它們的指令格式如下:SAL/SAR寄存器/內(nèi)存地址, CL/立即數(shù)受影響的標(biāo)志位:CF、OF、PF、SF和ZF(AF無定義)。算術(shù)移位指令的功能描述如下,具體功能下圖(a)、(b)所示。算術(shù)左移 SAL 把目的操作數(shù)的低位向高位移,空出的低位補(bǔ)0; 算術(shù)右移 SAR 把目的操作數(shù)的高位向低位移,空出的高位用最高位(符號(hào)位)填補(bǔ)。 例已知(AH
16、)=12H,(BL)=0A9H,試給出分別用算術(shù)左移和右移指令移動(dòng)1位后,寄存器AH和BL的內(nèi)容。解:用算術(shù)左移和右移指令移動(dòng)1位后,寄存器AH和BL的結(jié)果如下表所示。操作數(shù)的初值執(zhí)行的指令執(zhí)行后操作數(shù)的內(nèi)容(AH)=12H=10010BSAL AH, 1(AH)=24H=100100B(BL)=0A9H=10101001BSAL BL, 1(BL)=52H=1010010B(AH)=12H=10010BSAR AH, 1(AH)=09H=1001B(BL)=0A9H=10101001BSAR BL, 1(BL)=0D4H=11010100B匯編指令 SAL 指令等于易語言里的 左移() 和
17、模塊里的 SAL_() SHL_().匯編指令 SAR 指令在易語言里無對(duì)應(yīng)函數(shù) 等于模塊里的 SAR_() 函數(shù).但要注意模塊里的 SAR_() 是以32位整數(shù)型來運(yùn)算的,只等于匯編里的 SAR eax,1 這類的32位寄存器的運(yùn)行結(jié)果,若想以16位或8位來運(yùn)算,需要先把符號(hào)位擴(kuò)展到32位后再處理.2、邏輯移位指令此組指令有:邏輯左移 SHL (Shift Logical Left)和邏輯右移 SHR (Shift Logical Right)。它們的指令格式如下:SHL/SHR寄存器/內(nèi)存地址, CL/立即數(shù)受影響的標(biāo)志位:CF、OF、PF、SF和ZF(AF無定義)。邏輯左移/右移指令只有
18、它們的移位方向不同,移位后空出的位都補(bǔ) 0 。它們的具體功能下圖(a)、(b)所示。例已知(AH)=12H,(BL)=0A9H,試給出分別用邏輯左移和右移指令移動(dòng)1位后,寄存器AH和BL的內(nèi)容。解:用算術(shù)左移和右移指令移動(dòng)1位后,寄存器AH和BL的結(jié)果如下表所示。操作數(shù)的初值執(zhí)行的指令執(zhí)行后操作數(shù)的內(nèi)容(AH)=12H=10010BSHL AH, 1(AH)=24H=100100B(BL)=0A9H=10101001BSHL BL, 1(BL)=52H=1010010B(AH)=12H=10010BSHR AH, 1(AH)=09H=1001B(BL)=0A9H=10101001BSHR BL
19、, 1(BL)=54H=1010100B匯編 SHL 指令等于易語言里的 左移() 和模塊里的 SHL_() SAL_().匯編 SHR 指令等于易語言里的 右移() 和模塊里的 SHR_().3、雙精度移位指令此組指令有:雙精度左移SHLD(Shift Left Double)和雙精度右移SHRD(Shift Right Double)。它們都是具有三個(gè)操作數(shù)的指令,其指令的格式如下:SHLD/SHRD 寄存器/內(nèi)存地址, 寄存器, CL/立即數(shù);80386+其中:第一操作數(shù)是一個(gè)16位/32位的寄存器或存儲(chǔ)單元;第二操作數(shù)(與前者具有相同位數(shù))一定是寄存器;第三操作數(shù)是移動(dòng)的位數(shù),它可由C
20、L或一個(gè)立即數(shù)來確定。在執(zhí)行SHLD指令時(shí),第一操作數(shù)向左移n位,其“空出”的低位由第二操作數(shù)的高n位來填補(bǔ),但第二操作數(shù)自己不移動(dòng)、不改變。在執(zhí)行SHRD指令時(shí),第一操作數(shù)向右移n位,其“空出”的高位由第二操作數(shù)的低n位來填補(bǔ),但第二操作數(shù)自己也不移動(dòng)、不改變。SHLD和SHRD指令的移位功能示意圖如下圖所示。受影響的標(biāo)志位:CF、OF、PF、SF和ZF(AF無定義)下面是幾個(gè)雙精度移位的例子及其執(zhí)行結(jié)果。雙精度移位指令指令操作數(shù)的初值指令執(zhí)行后的結(jié)果SHLD AX, BX, 1(AX)=1234H,(BX)=8765H(AX)=2469HSHLD AX, BX, 3(AX)=1234H,(
21、BX)=8765H(AX)=91A4HSHRD AX, BX, 2(AX)=1234H,(BX)=8765H(AX)=448DHSHRD AX, BX, 4(AX)=1234H,(BX)=8765H(AX)=5123H匯編 SHLD 與 SHRD 在易語言里暫無對(duì)應(yīng)的函數(shù),2.5模塊里也沒加上這兩個(gè)函數(shù).4、循環(huán)移位指令循環(huán)移位指令有:循環(huán)左移 ROL (Rotate Left)和循環(huán)右移 ROR (Rotate Right)。指令的格式:ROL/ROR寄存器/內(nèi)存地址, CL/立即數(shù)受影響的標(biāo)志位:CF和OF循環(huán)左移/右移指令只是移位方向不同,它們移出的位不僅要進(jìn)入CF,而且還要填補(bǔ)空出的位
22、。具體功能如下圖(a)、(b)所示。下面是幾個(gè)循環(huán)移位的例子及其執(zhí)行結(jié)果。循環(huán)移位指令指令操作數(shù)的初值指令執(zhí)行后的結(jié)果ROL AX, 1(AX)=6789H=110011110001001B(AX)=0CF12H=1100111100010010BROL AX, 3(AX)=6789H=110011110001001B(AX)=3C4BH=11110001001011BROR AX, 2(AX)=6789H=110011110001001B(AX)=59E2H=101100111100010BROR AX, 4(AX)=6789H=110011110001001B(AX)=9678H=1001
23、011001111000B匯編 ROL 在易語言里無對(duì)應(yīng)函數(shù),模塊里提供了 ROL_().匯編 ROR 在易語言里無對(duì)應(yīng)函數(shù),模塊里提供了 ROR_().5、帶進(jìn)位的循環(huán)移位指令帶進(jìn)位的循環(huán)移位指令有:帶進(jìn)位的循環(huán)左移 RCL (Rotate Left Through Carry)和帶進(jìn)位的循環(huán)右移 RCR (Rotate Right)。指令的格式:RCL/RCR寄存器/內(nèi)存地址, CL/立即數(shù)受影響的標(biāo)志位:CF和OF帶進(jìn)位的循環(huán)左移右移指令只有移位的方向不同,它們都用原CF的值填補(bǔ)空出的位,移出的位再進(jìn)入CF。具體功能如下圖(a)、(b)所示。下面是幾個(gè)帶進(jìn)位循環(huán)移位的例子及其執(zhí)行結(jié)果。雙
24、精度移動(dòng)指令指令操作數(shù)的初值指令執(zhí)行后的結(jié)果RCL AX, 1CF=0,(AX)=0ABCDH=1010101111001101B(AX)=579AH=101011110011010BRCL AX, 1CF=1,(AX)=0ABCDH=1010101111001101B(AX)=579BH=101011110011011BRCR AX, 2CF=0,(AX)=0ABCDH=1010101111001101B(AX)=AAF3H=1010101011110011BRCR AX, 2CF=1,(AX)=0ABCDH=1010101111001101B(AX)=EAF3H=1110101011110
25、011B匯編 RCL 在易語言里無對(duì)應(yīng)函數(shù),模塊里提供了 RCL_().匯編 RCR 在易語言里無對(duì)應(yīng)函數(shù),模塊里提供了 RCR_().本文重新介紹了這些將在封包算法里將常用到的匯編指令,大家要盡量記住這些指令的運(yùn)算方式。最多被用到的指令主要有 XOR-位異或 ,ROL-左循環(huán)移位 ,ROR-右循環(huán)移位 ,AND-位與 ,OR-位或 ,SHL-左移 ,SHR-右移 ,NOT-位取反。其它加減乘除,算術(shù)移位等用到的機(jī)率很少。有些算法指令在易語言里也有對(duì)應(yīng)的函數(shù),或者模塊里也有提供了這些功能,不過需要注意的是目前2.5模塊里提供的這幾個(gè)功能是按32位運(yùn)算的,大家在使用時(shí)要注意,有關(guān)相應(yīng)的8位與16
26、位運(yùn)算的函數(shù)下版時(shí)會(huì)增加上去。封包加密解密-02前面我們介紹了最常會(huì)被用在封包加密解密算法中的指令,本節(jié)開始教大家些入門的知識(shí),如何去分析封包數(shù)據(jù)。分析封包數(shù)據(jù)主要分兩方面:一、用肉眼看,再動(dòng)手寫代碼測(cè)試,對(duì)于簡(jiǎn)單算法的封包還是容易搞定的。二、動(dòng)態(tài)調(diào)試,對(duì)于復(fù)雜算法的封包就只能這樣才能跟蹤分析出他的算法。本章教材會(huì)全部都講解到,當(dāng)然先介紹第一方式,用肉眼來看,這可是件辛苦的事喲,大家準(zhǔn)備好防輻射的眼鏡與眼藥水吧.可千萬別用眼過度,要記得多做做眼保健操哦。要想用肉眼分析封包,就得要有被加密前的明文內(nèi)容,與被加密后的封包數(shù)據(jù).只有這樣才能用眼來看,來分析。如果你只有一段密文而沒有對(duì)應(yīng)的明文,就只能
27、扯蛋了。對(duì)于獲取加密后的封包很簡(jiǎn)單,大家完全可以自已用模塊里的截包功能來編寫個(gè)工具出來,也可以找一些現(xiàn)成的封包攔截工具來用,例如老牌的WPE這個(gè)軟件。明文包又如何得到呢?比如說我們?cè)谟螒蚶镆l(fā)言一段文本內(nèi)容,同時(shí)攔截下這段發(fā)出的封包,就可以肯定這條包里有包含著某些文本內(nèi)容了。只需要多截幾條不同文本的聊天封包,進(jìn)行對(duì)應(yīng)就能簡(jiǎn)單的分析出來相應(yīng)的明文文本對(duì)應(yīng)被加密后的封包中哪些數(shù)據(jù)。下面先來介紹些入門知識(shí)開一個(gè)IE瀏覽器,打開百度網(wǎng)站 在搜索框輸入 42724920 后運(yùn)行WPE軟件,選擇IE的進(jìn)程,點(diǎn)擊順三角按鈕開始攔截封包.在百度里點(diǎn)搜索,會(huì)被WPE攔載下數(shù)據(jù)包,點(diǎn)擊黑方框的停止按鈕,就可以查看
28、被攔截下來的那些數(shù)據(jù)包了。找到與IE地址欄里顯示的那條封包數(shù)據(jù) GET /s?wd=42724920 這條,在WPE的菜單->文件->另存為->文本文件 保存封包數(shù)據(jù)文本,下面就是這條封包數(shù)據(jù):16 0 9 429(size) Send(發(fā)送)0000 47 45 54 20 2F 73 3F 77 64 3D 34 32 37 32 34 39 GET /s?wd=4272490010 32 30 20 48 54 54 50 2F 31 2E 31 0D 0A 41 63 63 20 HTTP/1.1.Acc0020 65 70
29、 74 3A 20 69 6D 61 67 65 2F 67 69 66 2C 20 ept: image/gif,0030 69 6D 61 67 65 2F 6A 70 65 67 2C 20 69 6D 61 67 image/jpeg, imag0040 65 2F 70 6A 70 65 67 2C 20 69 6D 61 67 65 2F 70 e/pjpeg, image/p0050 6A 70 65 67 2C 20 61 70 70 6C 69 63 61 74 69 6F jpeg, applicatio0060 6E 2F 78 2D 73 68 6F 63 6B 77
30、61 76 65 2D 66 6C n/x-shockwave-fl0070 61 73 68 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E ash, application0080 2F 76 6E 64 2E 6D 73 2D 65 78 63 65 6C 2C 20 2A /vnd.ms-excel, *0090 2F 2A 0D 0A 52 65 66 65 72 65 72 3A 20 68 74 74 /*.Referer: htt00A0 70 3A 2F 2F 77 77 77 2E 62 61 69 64 75 2E 63 6F p:/www.
31、baidu.co00B0 6D 2F 0D 0A 41 63 63 65 70 74 2D 4C 61 6E 67 75 m/.Accept-Langu00C0 61 67 65 3A 20 7A 68 2D 63 6E 0D 0A 55 73 65 72 age: zh-cn.User00D0 2D 41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F -Agent: Mozilla/00E0 34 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65 3B 4.0 (compatible;00F0 20 4D 53 49 4
32、5 20 37 2E 30 3B 20 57 69 6E 64 6F MSIE 7.0; Windo0100 77 73 20 4E 54 20 35 2E 31 3B 20 54 72 69 64 65 ws NT 5.1; Tride0110 6E 74 2F 34 2E 30 29 0D 0A 41 63 63 65 70 74 2D nt/4.0).Accept-0120 45 6E 63 6F 64 69 6E 67 3A 20 67 7A 69 70 2C 20 Encoding: gzip,0130 64 65 66 6C 61 74 65 0D 0A 48 6F 73 74 3
33、A 20 77 deflate.Host: w0140 77 77 2E 62 61 69 64 75 2E 63 6F 6D 0D 0A 43 6F .Co0150 6E 6E 65 63 74 69 6F 6E 3A 20 4B 65 65 70 2D 41 nnection: Keep-A0160 6C 69 76 65 0D 0A 43 6F 6F 6B 69 65 3A 20 42 41 live.Cookie: BA0170 49 44 55 49 44 3D 42 42 35 46 34 46 39 43 34 35 IDUID=BB5F4F9C450180 34 31 38 3
34、0 43 35 33 31 31 44 35 38 44 45 43 45 4180C5311D58DECE0190 33 30 32 36 45 46 3A 46 47 3D 31 3B 20 42 44 5F 3026EF:FG=1; BD_01A0 55 54 4B 5F 44 56 54 3D 31 0D 0A 0D 0A UTK_DVT=1.在WPE里攔截下來的封包,左中右分三列,第一列無意義,第二列是封包數(shù)據(jù)的十六進(jìn)制文本,第三列是字符串文本。很多新人總愛抓著第三列的文本數(shù)據(jù)不放,事實(shí)上我要嚴(yán)肅的告訴你,第三列的文本數(shù)據(jù),如果是明文的情況下可以做為參考用,否則第三列數(shù)據(jù)是沒有多少意
35、義的,為什么呢?因?yàn)榈谌兄荒茱@示可視的字符,對(duì)于非可視的字符統(tǒng)統(tǒng)用 "." 這個(gè)點(diǎn)號(hào)來表示,這對(duì)于我們要進(jìn)行解密封包是沒有作用的,例如圖上的紅色十六進(jìn)制數(shù)據(jù) 0D 0A 正是文本里的換行符號(hào),在第三列中無法顯示換行,全用點(diǎn)號(hào)來代表了。封包的正文就是這些十六進(jìn)制的文本數(shù)據(jù)了,但你也不能抓著十六進(jìn)制就不放了,要知道,封包都應(yīng)該用十進(jìn)制的字節(jié)集來表示,但由于十進(jìn)制從0到255間小則一個(gè)字,多則三個(gè)字,如果直接顯示就會(huì)一團(tuán)糟,所以絕大多數(shù)的截包類軟件,都會(huì)把封包數(shù)據(jù)在三個(gè)字符的十六進(jìn)制來顯示,這樣就能工工整整的排列起來了。于是你恍然大悟,原來只要把這段十六進(jìn)制的數(shù)據(jù)解密就行了哇!
36、但我要提醒你又透逗了一次,這段十六進(jìn)制的封包根本就不需要解密,分析封包的最終結(jié)果不就是我們得編寫與封包有關(guān)的功能嗎?在截包功能里截到的就是字節(jié)集數(shù)據(jù),不是十六進(jìn)制的,如果是明文的話直接用到文本(字節(jié)集封包) 就能顯示出來了,所以用WPE截下的包,頂多只是把十六進(jìn)制轉(zhuǎn)回成十進(jìn)制的字節(jié)集即可,這個(gè)過程算不上加密解密。所以像上面的十六進(jìn)制的封包數(shù)據(jù),只需要用模塊里的十六進(jìn)制到字節(jié)集() 就能轉(zhuǎn)換過來了。字節(jié)集封包=十六進(jìn)制到字節(jié)集("47 45 54 20 2F 73 3F 77 64 3D 34 32 37 32 34 39 32 30 20 48 54 54 50 2F 31 2E 3
37、1 0D 0A 41 63 63"," ")輸出調(diào)試文本(到文本(字節(jié)集封包)上面說的是明文包,明文包自然是無需解密,下面再用WPE攔截在百度里搜“外掛作坊” 看看會(huì)截到什么樣的包?13 0 9 445 Send0000 47 45 54 20 2F 73 3F 77 64 3D 25 43 44 25 45 32 GET /s?wd=0010 25 42 39 25 44 32 25 44 37 25 46 37 25 42 37 25 %0020 42 42 20 48 54 54 50 2F 31 2E 31 0D
38、 0A 41 63 63 BB HTTP/1.1.Acc0030 65 70 74 3A 20 69 6D 61 67 65 2F 67 69 66 2C 20 ept: image/gif,0040 69 6D 61 67 65 2F 6A 70 65 67 2C 20 69 6D 61 67 image/jpeg, imag0050 65 2F 70 6A 70 65 67 2C 20 69 6D 61 67 65 2F 70 e/pjpeg, image/p0060 6A 70 65 67 2C 20 61 70 70 6C 69 63 61 74 69 6F jpeg, applica
39、tio0070 6E 2F 78 2D 73 68 6F 63 6B 77 61 76 65 2D 66 6C n/x-shockwave-fl0080 61 73 68 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E ash, application0090 2F 76 6E 64 2E 6D 73 2D 65 78 63 65 6C 2C 20 2A /vnd.ms-excel, *00A0 2F 2A 0D 0A 52 65 66 65 72 65 72 3A 20 68 74 74 /*.Referer: htt00B0 70 3A 2F 2F 77 77
40、 77 2E 62 61 69 64 75 2E 63 6F p:/www.baidu.co00C0 6D 2F 0D 0A 41 63 63 65 70 74 2D 4C 61 6E 67 75 m/.Accept-Langu00D0 61 67 65 3A 20 7A 68 2D 63 6E 0D 0A 55 73 65 72 age: zh-cn.User00E0 2D 41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F -Agent: Mozilla/00F0 34 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65
41、 3B 4.0 (compatible;0100 20 4D 53 49 45 20 37 2E 30 3B 20 57 69 6E 64 6F MSIE 7.0; Windo0110 77 73 20 4E 54 20 35 2E 31 3B 20 54 72 69 64 65 ws NT 5.1; Tride0120 6E 74 2F 34 2E 30 29 0D 0A 41 63 63 65 70 74 2D nt/4.0).Accept-0130 45 6E 63 6F 64 69 6E 67 3A 20 67 7A 69 70 2C 20 Encoding: gzip,0140 64
42、 65 66 6C 61 74 65 0D 0A 48 6F 73 74 3A 20 77 deflate.Host: w0150 77 77 2E 62 61 69 64 75 2E 63 6F 6D 0D 0A 43 6F .Co0160 6E 6E 65 63 74 69 6F 6E 3A 20 4B 65 65 70 2D 41 nnection: Keep-A0170 6C 69 76 65 0D 0A 43 6F 6F 6B 69 65 3A 20 42 41 live.Cookie: BA0180 49 44 55 49 44 3D 42 42 35 46 34 46 39 43
43、 34 35 IDUID=BB5F4F9C450190 34 31 38 30 43 35 33 31 31 44 35 38 44 45 43 45 4180C5311D58DECE01A0 33 30 32 36 45 46 3A 46 47 3D 31 3B 20 42 44 5F 3026EF:FG=1; BD_01B0 55 54 4B 5F 44 56 54 3D 31 0D 0A 0D 0A UTK_DVT=1.通過前一次的包我們知道在 GET /s?wd= 后面的內(nèi)容是我們輸入在百度搜索框中的文本,但這條包里的結(jié)果卻不一樣,明明我們輸入的是 “外掛作坊”但這里居然是 也不知道是
44、什么的玩意,所以可以肯定,原明文內(nèi)容“外掛作坊”被某種算法給編碼處理過了,因?yàn)樗惴ê?jiǎn)單所以稱為編碼,復(fù)雜的叫加密,好像沒人這么明確的定義過吧,不管他叫編碼還是叫加密都無所謂了,重要的是我們?nèi)绾巫砸岩材軐懗鰜磉@樣的算法。盡管之前說過,要分析封包還是得用那段十六進(jìn)制的數(shù)據(jù),但這里的第三列字符串文本內(nèi)容仍然極據(jù)參考意義,看這段被處理過的紅色文本內(nèi)容,感覺像是十六進(jìn)制的格式.去掉%分號(hào)就是 CD E2 B9 D2 D7 F7 B7 BB 正好八對(duì),外掛作坊四個(gè)字剛好也是8字節(jié)的長度,即然懷疑他看起來像是被轉(zhuǎn)十六進(jìn)制的,咱只需要試試看就知道了。輸入調(diào)試文本 (字節(jié)集到十六進(jìn)制 (到字節(jié)集 (“外掛作坊”
45、), “ ”)輸出調(diào)試文本 (到文本 (十六進(jìn)制到字節(jié)集 (“CD E2 B9 D2 D7 F7 B7 BB”, “ ”)* CD E2 B9 D2 D7 F7 B7 BB* 外掛作坊測(cè)試結(jié)果真是這樣的,由此可見網(wǎng)頁的URL中若含有一些特殊字符或中文等時(shí),需要轉(zhuǎn)為十六進(jìn)制文本,對(duì)于轉(zhuǎn)為十六進(jìn)制后的數(shù)據(jù)還加上 % 百分號(hào),來說明后面的是16進(jìn)制數(shù)據(jù)。上面介紹了用WPE截包,說了封包應(yīng)該是十進(jìn)制的字節(jié)集格式,但為了工整顯示,所以用十六進(jìn)制來輸出,并且還提供了字符串供參考,但字符串是無法正確顯示一些特殊字符的,下面再介紹一點(diǎn)基礎(chǔ)知識(shí),這是前段時(shí)間有一個(gè)會(huì)員向我求助時(shí)的記錄,以此為例:這個(gè)會(huì)員遇到了這
46、個(gè)問題,明文文本 70 被加密成了 3A3930263E3826393B3C26393F38 加密后的文本數(shù)據(jù)咋看都像是16進(jìn)制的處理,但是不對(duì).因?yàn)槿舭堰@段明文轉(zhuǎn)成真正的十六進(jìn)制,與被加密的十六進(jìn)制總是有8的相差結(jié)果.于是他便順理成章的認(rèn)為這只是在不同的時(shí)候采用+或-進(jìn)行運(yùn)算后再轉(zhuǎn)為十六進(jìn)制的。老實(shí)說,他的想法確實(shí)沒錯(cuò).但這似乎不好控制,得知道一個(gè)值在多少或啥條件時(shí)才會(huì)用加還是用減呢?或許可以試試用別的方式來計(jì)算看看。2 1 8 . 6 0 . 1 3 4 . 1 7 03A 39 30 26 3E 38 26 39 3B 3C 26 39 3F 38通過上面的明文與
47、密文對(duì)應(yīng)的關(guān)系來看,明文字符 "1" 總是等于 0x39 這個(gè)規(guī)律,可以肯定這個(gè)算法方式是按一個(gè)固定的方法來運(yùn)算的,并且是一個(gè)一個(gè)字節(jié)來處理.第一個(gè)字節(jié)的運(yùn)算結(jié)果不會(huì)影響到第二字節(jié)的處理,下面我們把這一切都轉(zhuǎn)為十進(jìn)制字節(jié)集來再分析。輸出調(diào)試文本 (字節(jié)集到十進(jìn)制 (到字節(jié)集 (“70”), “,”)輸出調(diào)試文本 (字節(jié)集到十進(jìn)制 (十六進(jìn)制到字節(jié)集 (“3A 39 30 26 3E 38 26 39 3B 3C 26 39 3F 38”, “ ”)* 50,49,56,46,54,48,46,49,51,52,46,49,55,48* 58,57,4
48、8,38,62,56,38,57,59,60,38,57,63,56明文與密文的對(duì)照結(jié)果,確實(shí)都相差著8,那么在這都相差8的背后有沒有其它什么玄機(jī)呢?如果不是采用加減乘除的方式,那就該是位運(yùn)算或密碼表了,對(duì)于密碼表以后再介紹。如果想知道是不是通過位運(yùn)算,那就得轉(zhuǎn)換成二進(jìn)制才能更直觀的分析:明文=00110010 00110001 00111000 00101110 00110110 00110000 00101110 00110001 00110011 00110100 00101110 00110001 00110111 00110000密文=00111010 00111001 001100
49、00 00100110 00111110 00111000 00100110 00111001 00111011 00111100 00100110 00111001 00111111 00111000 8=00111010 因?yàn)槊魑母芪闹g總是相差8,所以我們要重點(diǎn)看看這兩段的二進(jìn)制里與8倒底有什么關(guān)系。在前一節(jié)教材里說位運(yùn)算里最多會(huì)被用到的一般都是 XOR 位異或,看看上面的明文與密文間的第四位的結(jié)果,只要明文第四位=8 加密后該位就變成0了,若明文第四位=0 則加密后就成1了,看起來只是把第四位進(jìn)行簡(jiǎn)單的反過來而已,而 XOR 則正好符合這種反位的結(jié)果,當(dāng)然 NOT位取反也是用來反位的
50、,但 NOT 是把所有的位都反過來,而不能把指定的位反過來,所以這段數(shù)據(jù),只需要把明文數(shù)據(jù)位異或8就是加密了,把密文數(shù)據(jù)再次位異或8又能恢復(fù)成明文,這就是位異或的最大好處,可以即方便又簡(jiǎn)單的來進(jìn)行加密與恢復(fù),這才是導(dǎo)致位異或在可逆算法中被應(yīng)用最多的原因,上面的明文與密文用位與位或移位等都無法把全部明文都算成與密文完全相同的結(jié)果。位異或:能把指定的位翻過來位與:都是1時(shí)才為1位或:都是0時(shí)才為0記住上面的規(guī)則.只要明白了如何算后,寫算法的代碼就好辦了,在 CALL技術(shù)-07 的那節(jié)里的客戶端發(fā)送的封包就是用了這種 XOR 的運(yùn)算方式寫的。封包加密解密-03前段在QQ上又有一會(huì)員問我能不能解密一段
51、封包,當(dāng)時(shí)給他解出來了,現(xiàn)在翻出了當(dāng)時(shí)與他的聊天記錄,整理一下寫這篇教程,供大家學(xué)習(xí)學(xué)習(xí),這里講到的將都是些基礎(chǔ)的入門的知識(shí)與經(jīng)驗(yàn)心得。該網(wǎng)友當(dāng)時(shí)發(fā)了這幅圖片給我,說是他自已截的數(shù)據(jù)包記錄下來的一點(diǎn)數(shù)據(jù),問我這樣的能不能解密?當(dāng)時(shí)我粗略的看了一下最下面的兩行 十六進(jìn)制與文本數(shù)據(jù),就回答他是一般的位運(yùn)算,因?yàn)榉獍募用芘c解密一般是離不開位運(yùn)算,判斷依據(jù)是:一、每個(gè)字符對(duì)應(yīng)一個(gè)十六進(jìn)制值。 說明該封包在加解密過程中的長度應(yīng)該與原文一致,不會(huì)因?yàn)榧咏饷芏冮L或變短。二、不管 h 與 p 這兩個(gè)字符在什么位置,它們始終對(duì)應(yīng) DC 與 C4 兩值。 說明該封包在加解密過程中是以單一字節(jié)進(jìn)行運(yùn)算的,并且不
52、會(huì)影響到下字節(jié)數(shù)據(jù)。雖然有了我的提示,但他還是沒理解,還是不會(huì),后來才知道原來他易語言都還是門外漢 。為了方便分析明文與密文之前的對(duì)應(yīng)關(guān)系,我叫他攔截了一段封包數(shù)據(jù)明文:abcdABCD0123456789密文:D5 D6 D7 D0 F5 F6 F7 F0 84 85 86 87 80 81 82 83 8C 8D雖然知道算法里基本都是用位運(yùn)算的,但這里我還是想偷個(gè)懶,以為沒準(zhǔn)與加減法就能搞定。 當(dāng)時(shí)簡(jiǎn)單的計(jì)算了明文a=97=0x61 密文 a=213=0xD5 差值=213-65=116.然后寫了個(gè)簡(jiǎn)單的代碼把每個(gè)字節(jié)都加上116。 代碼運(yùn)行后輸出的數(shù)據(jù):D5 D6 D7 D8 B5 B6
53、 B7 B8 A4 A5 A6 A7 A8 A9 AA AB AC AD與之前正確的密文包對(duì)比發(fā)現(xiàn)錯(cuò)了,.abcd 中前三個(gè)字符是正確的,第四個(gè)d出錯(cuò)了,汗??磥砑訙p法行不通,位運(yùn)算才是王道!幸好是每單字節(jié)處理的,位運(yùn)算范圍不大,還是好計(jì)算的,為了算出用哪種位運(yùn)算我又編了小段代碼:代碼運(yùn)行后輸出的數(shù)據(jù): 位異或=180因?yàn)槊總€(gè)字節(jié)是八位,數(shù)據(jù)范圍是0-255,所以上面我用一個(gè)計(jì)次循環(huán)從0到255來進(jìn)行運(yùn)算,另外可用于位運(yùn)算的函數(shù)還有其它幾個(gè),如左右移位,循環(huán)移位等,我這里只采樣測(cè)試了位與()、位或()、位異或()、這三個(gè),從輸出的調(diào)試文本里,得到可以使用位異或(字節(jié),180)進(jìn)行加密數(shù)據(jù) a。
54、其實(shí)這里我們也可以用上節(jié)學(xué)的知識(shí),轉(zhuǎn)為二進(jìn)制來查看出來的明文 "abcd" = 97,98,99,100= 01100001 01100010 01100011 01100100密文 "D5 D6 D7 D0" = 213,214,215,208= 11010101 11010110 11010111 11010000仔細(xì)看這幾個(gè)加密前與加密的二進(jìn)制,從右向左總是在第 3,5,6,8 四個(gè)位被翻過來的特征,那么按這四個(gè)位到底是啥值呢? 10110100 = 180 剛好是180??梢杂糜?jì)算器里的科學(xué)型來查看,或用模塊里的二到十("1011010
55、0") 來計(jì)算. 用肉眼查起來有點(diǎn)累,所以像上面直接寫小段代碼,用1-255全進(jìn)行測(cè)試一下就知道了.呵呵.那么對(duì)于其它的數(shù)據(jù),是否也會(huì)正確無誤呢?下面編寫了一段完整的加密代碼來測(cè)試:輸出調(diào)試文本* D5 D6 D7 D0 F5 F6 F7 F0 84 85 86 87 80 81 82 83 8C 8D* abcdABCD0123456789這次加密的數(shù)據(jù)完全正確,不但加密正確,這段代碼還能同時(shí)進(jìn)行解密,注意,如果只是單純的位異或,是即可以加密也可以還原解密,所以在加解密里位異或用到的很多,除此之外就是移位與循環(huán)移位也用得很多.接下來總結(jié)一下經(jīng)驗(yàn):一,網(wǎng)絡(luò)游戲的封包加密解密一般都是很
56、簡(jiǎn)單的 原因是如果算法復(fù)雜的話,游戲客戶端無所謂,但服務(wù)器網(wǎng)關(guān)若要同時(shí)處理幾萬個(gè)用戶同時(shí)在線,并且數(shù)據(jù)量大的情況下,加解密又復(fù)雜就會(huì)處理不了,再好的服務(wù)器配置總不可能全部用來運(yùn)算數(shù)據(jù)包吧,其中還要對(duì)數(shù)據(jù)庫進(jìn)行大量的處理呢,所以封包的加解密不會(huì)太復(fù)雜。二、每條封包中常常會(huì)有分隔符.分隔符一般都是明文的 例如某游戲中封包格式如 #xxxxxx!?使用#與!兩個(gè)符號(hào)放在該包的第一與最后字節(jié),起到分隔封包的目的,為什么要分隔封包呢?因?yàn)橛螒蛑锌赡芤l(fā)送的數(shù)據(jù)很多很頻繁,常常會(huì)見到這種情況 在發(fā)了一條封包后馬上又發(fā)了第二條封包.因?yàn)榫W(wǎng)絡(luò)傳輸上的問題,最終第二條封包可能比第一條更快到目標(biāo)機(jī)網(wǎng)卡接收,所以目標(biāo)機(jī)在取回封包時(shí)可能同時(shí)把兩條包取回來,此時(shí)兩條封包會(huì)合并在了一塊,于是封包的分隔符就能起
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 佛山規(guī)劃測(cè)繪合同范例
- 促進(jìn)多元化經(jīng)營拓寬業(yè)務(wù)領(lǐng)域計(jì)劃
- 幼兒心理發(fā)展監(jiān)測(cè)方案計(jì)劃
- 幼兒園多元智能的教研探討計(jì)劃
- 圖書信息存儲(chǔ)管理計(jì)劃
- 班主任早晨例會(huì)機(jī)制計(jì)劃
- 品牌建設(shè)的基礎(chǔ)與重要性計(jì)劃
- 適應(yīng)性學(xué)習(xí)在工作中的應(yīng)用計(jì)劃
- 《桐梓縣獅溪煤業(yè)有限公司貴州省桐梓縣文筆山-瓦窯坪煤礦(新建)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評(píng)審意見
- 統(tǒng)編版小學(xué)語文二年級(jí)下冊(cè)第18課《太空生活趣事多》精美課件
- 2024年中考地理真題完全解讀(湖南省卷)
- 校長在2025年春季學(xué)期第一次班主任工作會(huì)議講話:“偷偷告訴你頂尖班主任都在用這個(gè)班級(jí)管理秘籍!”
- 2025年度美容院顧客權(quán)益及服務(wù)項(xiàng)目轉(zhuǎn)讓協(xié)議書
- GB/T 45229-2025劇場(chǎng)工藝安全要求
- 2025年廣州市黃埔區(qū)東區(qū)街招考社區(qū)居委會(huì)專職工作人員高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年黑龍江省高職單招《職測(cè)》高頻必練考試題庫400題(含答案)
- GB 45184-2024眼視光產(chǎn)品元件安全技術(shù)規(guī)范
- 2025年湖南科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年新人教版八年級(jí)下冊(cè)物理全冊(cè)教案
- 《建筑電氣設(shè)計(jì)》課件
- 2025年第六屆美麗中國國家版圖知識(shí)競(jìng)賽題庫及答案
評(píng)論
0/150
提交評(píng)論