版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、如有你有幫助,請購買下載,謝謝!網絡和黑客編程基本知識2009-10-28 10:17:14來源:冰點極限& 海洋頂端第一節(jié)了解 Windows 機制Windows是一個 “基于事件的,消息驅動的”操作系統(tǒng)。在 Windows 下執(zhí)行一個程序,只要用戶進行了影響窗口的動作(如改變窗口大小或移動、單擊鼠標等)該動作就會觸發(fā)一個相應 .第一節(jié)了解 Windows機制Windows是一個 “基于事件的,消息驅動的”操作系統(tǒng)。在 Windows下執(zhí)行一個程序,只要用戶進行了影響窗口的動作(如改變窗口大小或移動、單擊鼠標等)該動作就會觸發(fā)一個相應的“事件 ”系統(tǒng)每次檢測到一個事件時,就會給程序發(fā)送一個“
2、消息 ”,從而使程序可以處理該事件。每個 Windows 應用程序都是基于事件和消息的, 而且包含一個主事件循環(huán), 它不停地、反復地檢測是否有用戶事件發(fā)生。每次檢測到一個用戶事件,程序就對該事件做出響應,處理完再等待下一個事件的發(fā)生。Windows下的應用程序不斷地重復這一過程,直至用戶終止程序,用代碼來描述實際上也就是一個消息處理過程的while 循環(huán)語句。下面便簡單介紹一下與Windows系統(tǒng)密切相關的幾個基本概念:1:窗口:這是我要說的第一個概念。窗口是Windows本身以及 Windows環(huán)境下的應用程序的基本界面單位,但是很多人都誤以為只有具有標題欄、狀態(tài)欄、最大化、最小化按鈕這樣標
3、準的方框才叫窗口。其實窗口的概念很廣,例如按鈕和對話框等也是窗口,只不過是一種特殊化窗口罷了。從用戶的角度看,窗口就是顯示在屏幕上的一個矩形區(qū)域,其外觀獨立于應用程序,事實上它就是生成該窗口的應用程序與用戶間的直觀接口; 從應用程序的角度看,窗口是受其控制的一部分矩形屏幕區(qū)。應用程序生成并控制與窗口有關的一切內容,包括窗口的大小、風格、位置以及窗口內顯示的內容等。用戶打開一個應用程序后,程序將創(chuàng)建一個窗口,并在那里默頁如有你有幫助,請購買下載,謝謝!默地等待用戶的要求。每當用戶選擇窗口中的選項,程序即對此做出響應。2:程序:通常說的程序都是指一個能讓計算機識別的文件,接觸得最多的便是.exe
4、型的可執(zhí)行文件 .3:進程:說到進程,學過操作系統(tǒng)的人都很清楚,所謂進程就是應用程序的執(zhí)行實例(或稱一個執(zhí)行程序)需要注意的是:進程是程序動態(tài)的描述,而上面說到的程序是靜態(tài)的描述,兩者有本質的區(qū)別。舉個例子,從網上Down 了一個瑞星殺毒軟件到C 盤但沒有運行,那個.exe可執(zhí)行文件叫做程序,它是一個二進制碼的文件。一旦雙擊了exe 文件圖標運行程序,那個 “正在運行著的瑞星殺毒”便稱為進程,它在雙擊的那一刻被系統(tǒng)創(chuàng)建,當你關機或者在任務欄的圖標上單擊鼠標右鍵選“退出 ”時,進程便消亡,徹底結束了生命。進程經歷了由“創(chuàng)建”到“消亡 ”的生命期,而程序自始至終存在于你的硬盤上,不管你的機器是否啟
5、動。4:線程:線程是進程中的一個執(zhí)行單元,同一個進程中的各個線程對應于一組CPU 指令、一組 CPU 寄存器以及一堆棧。進程本來就具有動態(tài)的含義,然而實質上是通過線程來執(zhí)行體現(xiàn)的,從這個意義上說,Windows中進程的動態(tài)性意義已經不是很明顯了,只算是給程序所占的資源劃定一個范圍而已,真正具有動態(tài)性意義的是線程。5:消息:我們幾乎做每一個動作都會產生一個消息,鼠標被移動會產生WM_MOUSEMOVE 消息,鼠標左鍵被按下會產生 WM_LBUTTONDOWN 的消息,鼠標右鍵按下便產生 WM_RBUTTONDOWN 消息等等。所有的這些都可以通過GetMessage , SendMessage等
6、函數(shù)得到 .6:事件 :如在程序運行的過程中改變窗口的大小或者移動窗口等,都會觸發(fā)相應的“事件 ”。7:句柄:單單一個“柄 ”字便可以解釋它的意思了,我們天氣熱搖扇子的時候只要抓住扇柄便可以控制整個扇子的運動了,在程序中也差不多是這個意思。通常一個句柄就可以傳遞我們所要做的事情。有經驗的成員肯定清楚,編寫程序總是要和各種句柄打交道的,句柄是系統(tǒng)用來標識不同對象類型的工具, 如窗口、 菜單等, 這些東西在系統(tǒng)中被視為不同類型的對象,用不同的句柄將他們區(qū)分開來。C+教材中給句柄下的定義是:“在 Win32 里,句柄是指向一個無值型對象(void * )的指針,是一個4 字節(jié)長的數(shù)據 ”。從結構頁如
7、有你有幫助,請購買下載,謝謝!上看, 句柄的確是一個指針,盡管它沒有指向用于存儲某個對象的內存位置,而實際上句柄指向的是一個包含了對該對象進行的引用的位置。在編程時,只要抓住了對象的句柄就可以對該對象進行操作了.8:API 與 SDK :API 是英文Application Programming Interface的簡稱,意為“應用程序接口 ”,泛指系統(tǒng)為應用程序提供的一系列接口函數(shù)。 其實質是程序內的一套函數(shù)調用,在編程的時候可以直接調用,而不必知道其內部實現(xiàn)的過程,只知道它的原型和返回值就可以了.SDK 是英文Software Development Kit的縮寫 ,指 “軟件開發(fā)工具包
8、”,在防火墻的設計中就經常涉及到SDK 。第二節(jié)Win API編程簡介下面介紹一下WIN API.我們需要自己編寫一個工具時 ,必然會用到很多操作 windows 和控制 windows 的函數(shù) ,這些函數(shù)就是 windows API.API 是 Application Progamming Interface的縮寫 .就是說 API 是一系列已經定義的在windows內部的函數(shù) ,是應用程序和系統(tǒng)之間的橋梁 ,應用程序通過調用API 來請求系統(tǒng)完成一系列的任務.窗口 ,菜單 ,文件操作等都是通過API 實現(xiàn)的 .WIN32 API 就是 WINDOWS 32 位平臺的應用程序接口 .現(xiàn)在可視
9、化編程工具提供了大量控件 ,他們代替了 API 的功能 .這些控件都是構建在 WIN32 API之上的 .是封裝了的API 函數(shù)集合 .但是對于比較復雜和特殊功能(想我們的黑客編程 )來說 ,就必須用API 函數(shù)來實現(xiàn) .WIN API存放在動態(tài)鏈接庫(DLL) 中 ,在 98 系統(tǒng)中 ,有 32 位的GDI32.DLL,KERNEL32.DLL,16位的 GDI.EXE,動態(tài)鏈接庫中 .木馬和后門其實就是使用了文件操作函數(shù),這里做簡要介紹:刪除文件 :BOOL DeleteFile(LPCTSH lpFileName)復制文件 :BOOL CopyFile()移動文件 :BOOL MoveF
10、ile()等等具體的 API 可以上網自己去查看,有很多介紹API 的書籍 .頁如有你有幫助,請購買下載,謝謝!第二節(jié)Win API編程簡介下面介紹一下WIN API.我們需要自己編寫一個工具時 ,必然會用到很多操作 windows 和控制 windows 的函數(shù) ,這些函數(shù)就是 windows API.API 是 Application Progamming Interface的縮寫 .就是說 API 是一系列已經定義的在windows內部的函數(shù) ,是應用程序和系統(tǒng)之間的橋梁 ,應用程序通過調用API 來請求系統(tǒng)完成一系列的任務.窗口 ,菜單 ,文件操作等都是通過API 實現(xiàn)的 .WIN32
11、 API 就是 WINDOWS 32 位平臺的應用程序接口 .現(xiàn)在可視化編程工具提供了大量控件 ,他們代替了 API 的功能 .這些控件都是構建在 WIN32 API之上的 .是封裝了的API 函數(shù)集合 .但是對于比較復雜和特殊功能(想我們的黑客編程 )來說 ,就必須用API 函數(shù)來實現(xiàn) .WIN API存放在動態(tài)鏈接庫(DLL) 中 ,在 98 系統(tǒng)中 ,有 32 位的GDI32.DLL,KERNEL32.DLL,16位的 GDI.EXE,動態(tài)鏈接庫中 .木馬和后門其實就是使用了文件操作函數(shù),這里做簡要介紹:刪除文件 :BOOL DeleteFile(LPCTSH lpFileName)復制
12、文件 :BOOL CopyFile()移動文件 :BOOL MoveFile()等等具體的 API 可以上網自己去查看,有很多介紹API 的書籍 .第二節(jié)Win API編程簡介下面介紹一下WIN API.我們需要自己編寫一個工具時 ,必然會用到很多操作 windows 和控制 windows 的函數(shù) ,這些函數(shù)就是 windows API.API 是 Application Progamming Interface的縮寫 .就是說 API 是一系列已經定義的在windows內部的函數(shù) ,是應用程序和系統(tǒng)之間的橋梁 ,應用程序通過調用API 來請求系統(tǒng)完成一系列的任務.窗口 ,菜單 ,文件操作等
13、都是通過API 實現(xiàn)的 .頁如有你有幫助,請購買下載,謝謝!WIN32 API 就是 WINDOWS 32 位平臺的應用程序接口 .現(xiàn)在可視化編程工具提供了大量控件 ,他們代替了 API 的功能 .這些控件都是構建在 WIN32 API之上的 .是封裝了的API 函數(shù)集合 .但是對于比較復雜和特殊功能(想我們的黑客編程 )來說 ,就必須用API 函數(shù)來實現(xiàn) .WIN API存放在動態(tài)鏈接庫(DLL) 中 ,在 98 系統(tǒng)中 ,有 32 位的GDI32.DLL,KERNEL32.DLL,16位的 GDI.EXE,動態(tài)鏈接庫中 .木馬和后門其實就是使用了文件操作函數(shù),這里做簡要介紹:刪除文件 :B
14、OOL DeleteFile(LPCTSH lpFileName)復制文件 :BOOL CopyFile()移動文件 :BOOL MoveFile()等等具體的 API 可以上網自己去查看,有很多介紹API 的書籍 .第三節(jié)Windows網絡協(xié)議首先介紹一下網絡協(xié)議:網絡協(xié)議是網絡上所有設備之間通信規(guī)則的集合,他定義了通信時信息必須采用的格式和這些格式的意義.大多數(shù)網絡協(xié)議都采用分層體系結,每一層都建立在他的下層之上,向他的上一層提供服務,而把如何實現(xiàn)這一服務的細節(jié)對上層加以屏蔽.一臺設備上的第 N 層與另一臺設備上的第N 層進行通信的規(guī)則就是第N 曾協(xié)議 .在網絡上的個層之間中存在著許多協(xié)議
15、,接受方和發(fā)送方同層的協(xié)議必須一致,否則 ,一方就無法識別另一方發(fā)出的信息.網絡協(xié)議使網絡上的設備各種設備能相互交換信息.常用的協(xié)議有:TCP/IP 協(xié)議 ,IPX/SPX歇息等等 .在局域網中常用的IPX/SPX協(xié)議 .而訪問INTERNET, 就必須添加TCP/IP 協(xié)議 .TCP/IP 協(xié)議是傳輸控制協(xié)議/互聯(lián)網絡協(xié)議.他規(guī)范了網絡上所有設備的通信,尤其是一個主機與另一個主機之間的數(shù)據往來格式以及傳送方式 .在網絡的各層中還存在著許多協(xié)議,下面列出部分網絡協(xié)議規(guī)范:ARP地址解析協(xié)議SNMP網絡管理協(xié)議BOOTP讓無盤站從一個中心服務器上獲得IP 地址DHCP動態(tài)主機配置協(xié)議頁如有你有幫
16、助,請購買下載,謝謝!下面介紹網絡7 層協(xié)議在 WINDOWS的實現(xiàn) :7 層協(xié)議WIN 系統(tǒng)_7應用層7 應用程序_6表示層6 WINSOCK API(DLL)_5會話層5 SPI(DLL)_4傳輸層4 TDI(VXD,SYS)_3網絡層3 NDIS(VXD,SYS)_2數(shù)據鏈路層2 網卡驅動程序(VXD,SYS)_1物理層1網卡_相信這個映射圖可以讓大家比較清楚了解他們的對應關系TCP 協(xié)議圖示應用程序協(xié)議HTTP FTP TELNET傳輸協(xié)議TCP UDP網際協(xié)議IP物理層協(xié)議網卡IP 協(xié)議保證數(shù)據的傳輸,TCP 協(xié)議保證數(shù)據傳輸?shù)馁|量.TCP/IP 協(xié)議基于四層結構 :應用層 ,傳輸層
17、 ,網絡層 ,接口層 , 數(shù)據在傳輸時每通過一層就要在數(shù)據上加個頭 ,其中的數(shù)據供接受端同層使用 ,在接收端 ,每經過一層就把頭去掉,來保證傳輸數(shù)據格式的一致.TCP 頭部結構 :16 位源端口號16 位目的端口號_頁如有你有幫助,請購買下載,謝謝!_位序列號_位確認號_4 位首部長度 +6 位保留字6 位標志16 位窗口大小_16 位效驗和16 位緊急數(shù)據偏移量_數(shù)據段_IP 頭部結構 :4 位 IP 版本號4 位首部長度8 位服務類型16 位總長度_16 位標示3 位標志和偏移_8 位生存時間8 位協(xié)議16 位 IP 首部效驗和_32 位源 IP 地址_32 位目的 IP 地址_TCP 頭
18、和數(shù)據_頁如有你有幫助,請購買下載,謝謝!第四節(jié)關于服務器和客戶端編程在網絡編程中 , 最常用和最基礎的就是 WINSOCK. 現(xiàn)在我們討論 WINDOWS 下的 SOCKET 編程 .大凡在 WIN32 平臺上的WINSOCK編程都要經過下列步驟:定義變量 -獲得 WINDOCK 版本 -加載 WINSOCK 庫- 初始化 - 創(chuàng)建套接字 - 設置套接字選項 -關閉套接字 - 卸載 WINSOCK 庫 -釋放資源下面介紹WINSOCK C/S的建立過程 :服務器客戶端_1 初始化 WSA1初始化 WSA_2 建立一個 SOCKET2 建立一個SOCKET_3 綁定 SOCKET3 連接到服務
19、器_4 在指定的端口監(jiān)聽4發(fā)送和接受數(shù)據_5 接受一個連接5斷開連接_-發(fā)送和接受數(shù)據_斷開連接_大家注意 ,在 VC 中進行 WINSOCK編程時 ,需要引入如下兩個庫文件:WINSOCK.H( 這個是 WINSOCK API 的頭文件 ,WIN2K 以上支持 WINSOCK2, 所以可以用 WINSOCK2.H);Ws2_32.lib(WINSOCK API連接庫文件 ).使用方式如下 :#include #pragma comment(lib,ws2_32.lib)下面我們通過具體的代碼演示服務器和客戶端的工作流程:頁如有你有幫助,請購買下載,謝謝!首先 ,建立一個 WSADATA結構
20、,通常用 wsaDataWSADATA wsaData;然后 ,調用 WSAStartup函數(shù) ,這個函數(shù)是連接應用程序與winsock.dll的第一個調用 . 其中 ,第一個參數(shù)是WINSOCK版本號 ,第二個參數(shù)是指向WSADATA的指針 .該函數(shù)返回一個INT 型值 ,通過檢查這個值來確定初始化是否成功.調用格式如下 :WSAStartup(MAKEWORD(2,2),wsaData),其中MAKEWORD(2,2)表示使用 WINSOCK2版本 .wsaData用來存儲系統(tǒng)傳回的關于WINSOCK的資料 .if(iResuit=WSAStartup(MAKEWORD(2,2),wsaD
21、ata)!=0)printf(WSAStartup failed:%d,GetLastError(); /返回值不等與0,說明初始化失敗ExitProcess();/ 退出程序應用程序在完成對請求的 SOCKET 庫使用后 ,要調用 WSACleanup 函數(shù)來接觸 SOCKET 庫的綁定 ,并且釋放資源 .注意 WSAStartup初始化后 ,必須建立一個SOCKET 結構來保存SOCKET句柄 .下面我們建立一個SOCKET.首先我們建立一個 m_socket 的 SOCKET 句柄 ,接著調用 socket() 函數(shù) ,函數(shù)返回值保存在 m_socket 中 .我們使用 AF_INFE,
22、SOCK_STREAM,IPPROTO_TCP三個參數(shù) .第一個表示地址族,AF_INFE表示 TCP/IP 族 , 第二個表示服務類型,在 WINSOCK2中,SOCKET 支持以下三種類型 ;SOCK_STREAM流式套接字SOCK_DGRAM數(shù)據報套接字SOCK_RAW原始套接字第三個參數(shù)表示協(xié)議:IPPROTO_UDP UDP協(xié)議用于無連接數(shù)據報套接字IPPROTO_TCP TCP協(xié)議 用于流式套接字IPPROTO_ICMP ICMP協(xié)議用于原始套接字頁如有你有幫助,請購買下載,謝謝!m_socket=socket(AF_INFE,SOCK_STREAM,IPPROTO_TCP);/創(chuàng)
23、建 TCP 協(xié)議以下代碼用于檢查返回值是否有錯誤:if(m_scoket=INVALID_SOCKET)prinrf(Error at socket():%dn,GetLastError();WSACleanup();/ 釋放資源return;說明 ,如果 socket() 調用失敗 ,他將返回INVALID_SOCKET.為了服務器能接受一個連接 ,他必須綁定一個網絡地址 ,下面的代碼展示如何綁定一個已經初始化的 IP 和端口的 Socket. 客戶端程序用這個IP 地址和端口來連接服務器.sockaddr_in service;service.sin_family=AF_INET;/INT
24、ERNET地址族/將要綁定的本地IP 地址service.sin_port=htons(27015);/27015將要綁定的端口下面我們調用BIND 函數(shù) ,把 SOCKET和 SOCKADDR以參數(shù)的形式傳入,并檢查錯誤 .if(bind(m_socket,(SOCKADDR*)SERVICE,sizeof(service)=SOCKET_ERROR)printf(bind() failed.n);closesocket(m_socket);return;當綁定完成后 ,服務器必須建立一個監(jiān)聽隊列 ,以接受客戶端的請求 .listen() 使服務器進入監(jiān)聽狀態(tài) ,該函數(shù)調用成功返回 0,否則
25、返回SOCKET_ERROR.代碼如下 :if(listen(m_socket,1)=SOCKET-ERROR)頁如有你有幫助,請購買下載,謝謝!printf(error listening on socket.n);服務器端調用完LISTEN() 后 ,如果此時客戶端調用CONNECT()函數(shù) , 服務器端必須在調用ACCEPT(). 這樣服務器和客戶端才算正式完成通信程序的連接動作 .一旦服務器開始監(jiān)聽,我們就要指定一個句柄來表示利用ACCEPT() 函數(shù)接受的連接,這個句柄是用來發(fā)送和接受數(shù)據的表示. 建立一個SOCKET 句柄Socket AcceptSocket然后利用無限循環(huán)來檢測
26、是否有連接傳入.一但有連接請求,ACCEPT() 函數(shù)就會被調用,并且返回這次連接的句柄.printf(waitong for a client to connect.n);while(1)AcceptSocket=SOCKET_ERROR;while(AcceptSocket=SOCKET_ERROR)AcceptSocket=accept(m_socket,NULL,NULL);下面看客戶端端代碼:sockaddr_in clientService;clientService.sin_family=AF_INET;/INTERNET地址族/將要綁定的本地IP 地址clientService
27、.sin_port=htons(27015);/27015將要綁定的端口下面調用 CONNECT()函數(shù) :if ( connect( m_socket, (SOCKADDR*) clientService, sizeof(clientService) ) =SOCKET_ERROR)printf( Failed to connect.n );WSACleanup();return;頁如有你有幫助,請購買下載,謝謝!/如果調用失敗清理退出/調用成功繼續(xù)讀寫數(shù)據_到這里 ,服務器和客戶端的基本流程介紹完畢, 下面我們介紹數(shù)據交換.send():int sendSOCKET s,/ 指定發(fā)送端套接
28、字const char FAR?*buf,/指明一個存放應用程序要發(fā)送的數(shù)據的緩沖區(qū)int len,/實際要發(fā)送的數(shù)據字節(jié)數(shù)int flags/ 一般設置為0;C/S 都用 SEND 函數(shù)向 TCP 連接的另一端發(fā)送數(shù)據.recv():int recvSOCKET s,/ 指定發(fā)送端套接字char FAR?*buf,/ 指明一個緩沖區(qū)存放 RECC 受到的數(shù)據int len,/指明 BUF 的長度int flags/ 一般設置為0;C/S 都使用 RECV 函數(shù)從 TCP 連接的另一端接受數(shù)據_下面將完整的程序代碼提供如下, 大家可直接編譯運行首先看客戶端的代碼:頁如有你有幫助,請購買下載,謝
29、謝!#include #include #pragma comment(lib, ws2_32.lib)void main() / 初始化Winsock.WSADATA wsaData;int iResult = WSAStartup( MAKEWORD(2,2), wsaData );if ( iResult != NO_ERROR )printf(Error at WSAStartup()n);/ 建立 socket socket.SOCKET client;client = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );if ( client =
30、 INVALID_SOCKET ) printf( Error at socket(): %ldn, WSAGetLastError() );WSACleanup();return;/ 連接到服務器.sockaddr_in clientService;clientService.sin_family = AF_INET;clientService.sin_port = htons( 27015 );if ( connect( client, (SOCKADDR*) clientService, sizeof(clientService) ) = SOCKET_ERROR) printf( Fa
31、iled to connect.n );WSACleanup();return;/ 發(fā)送并接收數(shù)據.int bytesSent;int bytesRecv = SOCKET_ERROR;頁如有你有幫助,請購買下載,謝謝!char sendbuf32 = Client: Sending data.;char recvbuf32 = ;bytesSent = send( client, sendbuf, strlen(sendbuf), 0 );printf( Bytes Sent: %ldn, bytesSent );while( bytesRecv = SOCKET_ERROR ) bytes
32、Recv = recv( client, recvbuf, 32, 0 );if ( bytesRecv = 0 | bytesRecv = WSAECONNRESET ) printf( Connection Closed.n);break;if (bytesRecv 0)return;printf( Bytes Recv: %ldn, bytesRecv );return;下面是服務器端代碼:#include #include #pragma comment(lib, ws2_32.lib)void main() / 初始化WSADATA wsaData;int iResult = WSA
33、Startup( MAKEWORD(2,2), wsaData );if ( iResult != NO_ERROR )printf(Error at WSAStartup()n);/建立 socketSOCKET server;server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );頁如有你有幫助,請購買下載,謝謝!if ( server = INVALID_SOCKET ) printf( Error at socket(): %ldn, WSAGetLastError() );WSACleanup();return;/ 綁定 socket
34、sockaddr_in service;service.sin_family = AF_INET;service.sin_port = htons( 27015 );if ( bind( server, (SOCKADDR*) service, sizeof(service) ) = SOCKET_ERROR ) printf( bind() failed.n );closesocket(server);return;/ 監(jiān)聽socketif ( listen( server, 1 ) = SOCKET_ERROR )printf( Error listening on socket.n);/
35、接受連接SOCKET AcceptSocket;printf( Waiting for a client to connect.n );while (1) AcceptSocket = SOCKET_ERROR;while ( AcceptSocket = SOCKET_ERROR ) AcceptSocket = accept( server, NULL, NULL );printf( Client Connected.n);server = AcceptSocket;break;/ 發(fā)送接受數(shù)據頁如有你有幫助,請購買下載,謝謝!int bytesSent;int bytesRecv = SOCKET_ERROR;char sendbuf32 = Server: Sending Data.;char recvbuf32 = ;bytesRecv = recv( server, recvbuf, 32, 0 )
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度汽車維修保養(yǎng)連鎖經營合同8篇
- 基于2025年度市場策略的的品牌策劃與推廣服務合同
- 二零二五年度知識產權許可合同標的許可范圍和使用條件2篇
- 2025版煤礦安全生產技術改造承包合同4篇
- 個人理財規(guī)劃服務合同2024年度3篇
- 2025年度碼頭工程安全質量承包合同范本4篇
- 2025年度路面施工安全監(jiān)管合同范本4篇
- 二零二五版白酒行業(yè)節(jié)能減排技術改造合同3篇
- 2025年度場監(jiān)管廉政合同(針對新興產業(yè)與技術創(chuàng)新)4篇
- 二零二五版空調安裝與建筑節(jié)能一體化合同3篇
- 2024企業(yè)答謝晚宴會務合同3篇
- 中華人民共和國文物保護法
- 節(jié)前物業(yè)安全培訓
- 高甘油三酯血癥相關的器官損傷
- 牙膏項目創(chuàng)業(yè)計劃書
- 油畫人體200張東方姑娘的極致美
- 運動技能學習與控制課件第三章運動能力與個體差異
- 人教A版必修五《斐波那契數(shù)列》教案及教學反思
- 風電工程需要編寫的專項施工方案及危大工程目錄
- 商業(yè)計劃書(BP)財務計劃風險控制資本退出與附錄的撰寫秘籍
- 七年級下冊《Reading 1 A brave young man》優(yōu)質課教案牛津譯林版-七年級英語教案
評論
0/150
提交評論