2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Windows防火墻設(shè)計(jì),教學(xué)目的,隨著網(wǎng)絡(luò)安全問題日益嚴(yán)重,廣大用戶對(duì)網(wǎng)絡(luò)安全產(chǎn)品也越來越關(guān)注。防火墻作為一種網(wǎng)絡(luò)安全工具,早已普遍應(yīng)用,成為廣大網(wǎng)絡(luò)用戶的安全保護(hù)者。本課程設(shè)計(jì)的目的是學(xué)習(xí)Windows下防火墻設(shè)計(jì)技術(shù),并實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Windows下的防火墻軟件。,教學(xué)內(nèi)容,學(xué)習(xí)Windows下SPI的數(shù)據(jù)報(bào)過濾原理讀懂一個(gè)簡(jiǎn)單的SPI過濾程序設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Windows應(yīng)用層防火墻,基礎(chǔ)知識(shí),了解Windows

2、API程序的一般結(jié)構(gòu)掌握Windows下Socket編程了解Windows下DLL的概念(重要)了解Windows下訪問注冊(cè)表函數(shù),參考書目,Windows防火墻與網(wǎng)絡(luò)封包截獲技術(shù)電子工業(yè)出版社,朱雁輝Programming Windows程式開發(fā)設(shè)計(jì)指南 作 者:Charles PetzoldWindows 95 程式設(shè)計(jì)指南作 者:侯捷 WINDOWS網(wǎng)絡(luò)編程技術(shù)MSDN相關(guān)資料,講課內(nèi)容,講課時(shí)間4

3、學(xué)時(shí),實(shí)驗(yàn)16學(xué)時(shí)Windows下Hook技術(shù)Windows下報(bào)文截獲技術(shù)Windows下SPI原理介紹一個(gè)簡(jiǎn)單的SPI截獲程序課程設(shè)計(jì)要求,開發(fā)環(huán)境,操作系統(tǒng)為Windows XP編程工具為VC++ 6.0提供虛擬機(jī)文件,以及例子代碼和相關(guān)工具。,1.Windows的Hook技術(shù),Hook分為兩種Hook消息Windows是消息驅(qū)動(dòng)的運(yùn)行模式,所以Hook消息可以進(jìn)行很多特殊的處理。這里不詳細(xì)介紹。參見SetWin

4、dowsHookEx函數(shù)。(Windows 95 程式設(shè)計(jì)指南)Hook函數(shù)調(diào)用Hook函數(shù)調(diào)用是指截獲特定進(jìn)程或者系統(tǒng)對(duì)某個(gè)API函數(shù)的調(diào)用,使得API的執(zhí)行流程轉(zhuǎn)向特定的代碼,后者稱為注入代碼,注入代碼一般保存在注入DLL中。,1.Windows的Hook技術(shù),Hook函數(shù)調(diào)用技術(shù)利用Hook消息技術(shù),會(huì)自動(dòng)將注入DLL裝入,修改目標(biāo)程序的導(dǎo)入表,替換為注入函數(shù)。使用注冊(cè)表注入DLL,主要是某些特定注冊(cè)表項(xiàng)會(huì)被Window

5、s自動(dòng)調(diào)用。使用遠(yuǎn)程線程注入DLL,利用LoadLibrary偽裝為線程函數(shù),裝載注入DLL。通過覆蓋代碼進(jìn)行Hook,即修改一個(gè)函數(shù)在內(nèi)存中的映像,嵌入?yún)R編代碼,使該函數(shù)一執(zhí)行就轉(zhuǎn)跳到注入函數(shù)執(zhí)行,最霸道的方法。,1.我們學(xué)習(xí)的Hook技術(shù),比較簡(jiǎn)單的Hook技術(shù)使用注冊(cè)表,修改注冊(cè)表項(xiàng),安排注入DLL。在DLL中,利用函數(shù)指針來實(shí)現(xiàn)Hook。,2.Windows應(yīng)用層報(bào)文截獲技術(shù),1、原始套結(jié)字(Raw Socket)。

6、 Winsock2以后提供了原始套結(jié)字功能,可以在用戶態(tài)用Winsock函數(shù)接收所有流經(jīng)Winsock的IP包。這種方法在MSDN里面有敘述,是MS官方支持的方法,在網(wǎng)上也有很多資料。但是這種方法只能監(jiān)聽但是不能攔截?cái)?shù)據(jù)報(bào),所以可以作為網(wǎng)絡(luò)監(jiān)視器的選擇技術(shù),但是不能實(shí)現(xiàn)防火墻等更高要求的功能。另外最致命的缺點(diǎn)就是只能在Winsock層次上進(jìn)行,而對(duì)于網(wǎng)絡(luò)協(xié)議棧中底層協(xié)議的數(shù)據(jù)包例如TDI無法進(jìn)行處理。對(duì)于一些木馬和病毒來說很容易避開

7、這個(gè)層次的監(jiān)聽。2、替換系統(tǒng)自帶的WINSOCK動(dòng)態(tài)連接庫。這種方法可以在很多文章里面找到詳細(xì)的實(shí)現(xiàn)細(xì)節(jié)。 通過替換系統(tǒng)Winsock庫的部分導(dǎo)出函數(shù),實(shí)現(xiàn)數(shù)據(jù)報(bào)的監(jiān)聽和攔截。,2.Windows應(yīng)用層報(bào)文截獲技術(shù),3、Winsock服務(wù)提供者(SPI)。SPI是Winsock的另一面,是Winsock2的一個(gè)新特性。起初的Winsock是圍繞著TCP/IP協(xié)議運(yùn)行的,但是在Winsock 2中卻增加了對(duì)更多傳輸協(xié)議的支持。Wins

8、ock2不僅提供了一個(gè)供應(yīng)用程序訪問網(wǎng)絡(luò)服務(wù)的Windows socket應(yīng)用程序編程接口(API),還包含了由傳輸服務(wù)提供者和名字解析服務(wù)提供者實(shí)現(xiàn)的Winsock服務(wù)提供者接口(SPI)和ws2_32.dll。4、Windows2000包過濾接口。由于過濾規(guī)則限制太多不靈活而應(yīng)用不多。5、網(wǎng)絡(luò)監(jiān)視器SDK。MS官方的實(shí)時(shí)監(jiān)視分析網(wǎng)絡(luò)數(shù)據(jù)的方法。但是由于封裝的太復(fù)雜使用起來不靈活。,2.Windows核心層報(bào)文截獲技術(shù),1、T

9、DI接口2、firewall filter接口5、NDIS接口,2.Windows報(bào)文截獲技術(shù),我們重點(diǎn)學(xué)習(xí)應(yīng)用層報(bào)文截獲的第三種方法,這種方法簡(jiǎn)單、穩(wěn)定、可靠、功能也比較強(qiáng)大。,3.Windows SPI原理,在Microsoft Windows環(huán)境下的網(wǎng)絡(luò)編程接口就是Windows套接字(Windows Socket,簡(jiǎn)稱Winsock)。Winsock提供了包括TCP/IP、IPX等多種通信協(xié)議下的編程接口。indows9

10、8、Windows NT4.0、Windows 2000則直接支持Winsock2.0(32位)。Winsock2.0引入的一個(gè)功能就是允許開發(fā)者可以編寫自己的服務(wù)提供者接口程序,即SPI程序。SPI以DLL方式存在,工作在應(yīng)用層,為上層程序提供結(jié)構(gòu)函數(shù)。,3.Windows SPI原理,即用戶程序是通過WS2_32.dll來調(diào)用實(shí)際的Winsock函數(shù),這些函數(shù)都由服務(wù)提供者來提供。,管理者,3.Windows SPI原理,服務(wù)

11、提供者又有兩種方式,一種是基礎(chǔ)服務(wù)提供者(Base Service Provider),另外一種是分層服務(wù)提供者(Layer Service Provider)。兩者功能相同,但是插入Winsock體系的方式不同。基礎(chǔ)服務(wù)者在最底層,而分層服務(wù)提供者在一個(gè)鏈?zhǔn)浇Y(jié)構(gòu)中。,3.Windows SPI原理,無論那種服務(wù)提供者,其信息都保存在注冊(cè)表的分支:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\S

12、ervices\Winsock2\Parameters\Protocol_Catalog9\Catalog_entries中。,3.Windows SPI原理,上圖中PackedCatalogItem中到底保存的是什么呢?由于我們可以看到是以REG_BINARY表示二進(jìn)制方式保存,而REG_SZ表示以0結(jié)尾的字符串。保存的是一個(gè)結(jié)構(gòu):,typedef struct _WSAPROTOCOL_INFOW { DWORD dwSer

13、viceFlags1; DWORD dwServiceFlags2; DWORD dwServiceFlags3; DWORD dwServiceFlags4; DWORD dwProviderFlags; GUID ProviderId; DWORD dwCatalogEntryId; WSAPROTOCOLCHAIN ProtocolChain; //這個(gè)結(jié)構(gòu)中的域決定是否LS

14、P int iVersion; int iAddressFamily; int iMaxSockAddr; int iMinSockAddr; int iSocketType; int iProtocol; int iProtocolMaxOffset; int iNetworkByteOrder; int iSecurityScheme; DWORD dw

15、MessageSize; DWORD dwProviderReserved; WCHAR szProtocol[WSAPROTOCOL_LEN+1];} WSAPROTOCOL_INFOW, FAR * LPWSAPROTOCOL_INFOW;,typedef struct _PACKEDCATALOGITEM { Char sSpiPathName[MAX_PATH]; WSAPROTOCOL_INFOW P

16、rotocolInfo;} PACKETCATALOGITEM;結(jié)構(gòu)中每個(gè)字段含義在MSDN中可以找到,typedef struct _WSAPROTOCOLCHAIN { int ChainLen; /* the length of the chain, */ /* length = 0 means layered protocol, */

17、 /* length = 1 means base protocol, /* length > 1 means protocol chain */ DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; /* a list of dwCa

18、talogEntryIds */} WSAPROTOCOLCHAIN, FAR * LPWSAPROTOCOLCHAIN;,,,3.Windows SPI原理,由于SPI程序可以截獲所有通過的報(bào)文,所以反倒成為很多木馬監(jiān)視用戶流量或者進(jìn)行進(jìn)程保護(hù)的地方,例如ccnic就會(huì)在此增加一個(gè)自己的LSP。所以反木馬軟件也有監(jiān)控該注冊(cè)表項(xiàng)的功能,圖中為一個(gè)反木馬軟件對(duì)注冊(cè)表項(xiàng)的監(jiān)控。通過工具DumpSPI也可以查看詳細(xì)信息。,3.Windows

19、 SPI原理,另外一個(gè)監(jiān)視所有可能自動(dòng)啟動(dòng)程序的安全工具界面,也將SPI列為監(jiān)視對(duì)象。,3.Windows SPI原理,我們重點(diǎn)學(xué)習(xí)如何設(shè)計(jì)一個(gè)Windows防火墻,該防火墻替換掉TCP協(xié)議的基礎(chǔ)服務(wù)提供者,然后運(yùn)行安全功能,當(dāng)安全功能運(yùn)行完成后,再運(yùn)行原有的Winsock功能。 對(duì)于如何編寫一個(gè)分層服務(wù)提供者,MSDN有例子文檔,可以參考,原理接近。,4.介紹一個(gè)簡(jiǎn)單的防火墻程序,工程名:MiniSPI演示效果實(shí)現(xiàn)流程介紹

20、,4. IP_Moniter.dll具體代碼,,效果演示:,4.介紹一個(gè)簡(jiǎn)單的防火墻程序,程序分為兩個(gè)部分:1.install程序,為命令行程序,負(fù)責(zé)修改注冊(cè)表,替換掉TCP基礎(chǔ)服務(wù)提供者的某些信息,使得WS2_32.dll啟動(dòng)的是注入DLL。2.一個(gè)DLL即注入DLL,名稱為IP_Moniter.dll完成安全功能,同時(shí)遵守SPI接口。,4.介紹一個(gè)簡(jiǎn)單的防火墻程序,install程序流程:1.從命令行中參數(shù)判斷是安裝還是卸載I

21、P_Moniter.dll2.如果為安裝,調(diào)用CInstall類的InstallPriovider()方法,該方法負(fù)責(zé)修改注冊(cè)表,達(dá)到注入新的SPI DLL目的。3.如果為卸載,調(diào)用CInstall類的RemoveProvider()方法,該方法恢復(fù)原來的注冊(cè)表。,4. CInstall類方法介紹,InstallPriovider()流程:IsInstalled()方法判斷是否已經(jīng)修改注冊(cè)表,如果已經(jīng)生成了新的注冊(cè)表項(xiàng):SYSTE

22、M\\CurrentControlSet\\Services\\WinSock2\\MiniSpi就認(rèn)為已經(jīng)安裝,那么退出。調(diào)用EnumHookKey(FALSE),該方法遍歷SYSTEM\\CurrentControlSet\\Services\\WinSock2\\Parameters\\Protocol_Catalog9\\Catalog_Entries下所有的基礎(chǔ)服務(wù)提供者,判斷是否TCP/IP協(xié)議,如果是,則替換調(diào)注冊(cè)表中D

23、LL名字為IP_Moniter.dll,并將原來的DLL名字,保存到SYSTEM\\CurrentControlSet\\Services\\WinSock2\\MiniSpi下和dwCatalogEntryId對(duì)應(yīng)的值中。,4. CInstall類方法介紹,RemovePriovider()流程:基本是InstallProvider的逆過程,負(fù)責(zé)將原來的基礎(chǔ)服務(wù)提供者的DLL名字恢復(fù)。注意install程序僅僅修改了注冊(cè)表,將原

24、基礎(chǔ)服務(wù)提供者的DLL指向IP_Moniter.dll,沒有完成任何安全功能。,4. 效果演示,沒有Install之前的注冊(cè)表:,4. 效果演示,Install之后的注冊(cè)表:,,,4. IP_Moniter.dll功能,IP_Moniter.dll功能:1.按照要求,輸出WSPStartup函數(shù),該函數(shù)負(fù)責(zé)初試化,該函數(shù)也是所有使用Winsock程序首先調(diào)用的程序。2.WSPStartup()調(diào)用GetHookProvider()得

25、到原來的基礎(chǔ)服務(wù)者的DLL位置,然后裝載,并調(diào)用其WSPStartup(),然后得到Winsock的lpProcTable,該table指向所有的Winsock函數(shù)。3.替換lpProcStartup中的WSPSocket函數(shù),并打印調(diào)試信息,即截獲了WSPSocket函數(shù)的調(diào)用。,4. IP_Moniter.dll具體代碼,,int WSPAPI WSPStartup( WORD wVersionRequested, LPW

26、SPDATA lpWSPData, LPWSAPROTOCOL_INFOW lpProtocolInfo, WSPUPCALLTABLE upcallTable, LPWSPPROC_TABLE lpProcTable){OutputDebugString(_T("WSPStartup"));TCHAR sLibraryPath[512];LPWSPSTART

27、UPWSPStartupFunc = NULL;HMODULEhLibraryHandle = NULL;INTErrorCode = 0;if(!GetHookProvider(lpProtocolInfo, sLibraryPath) //得到系統(tǒng)的DLL路徑 || (hLibraryHandle = LoadLibrary(sLibraryPath))== NULL //裝載系統(tǒng)的DLL

28、 || (WSPStartupFunc = (LPWSPSTARTUP)GetProcAddress(hLibraryHandle, “WSPStartup”))==NULL) //得到系統(tǒng)的啟動(dòng)函數(shù)return WSAEPROVIDERFAILEDINIT;//調(diào)用系統(tǒng)的啟動(dòng)函數(shù),得到winsock方法表if((ErrorCode = WSPStartupFunc(wVersionRequested, lpWSPDa

29、ta, lpProtocolInfo, upcallTable, lpProcTable))!= ERROR_SUCCESS)return ErrorCode;NextProcTable = *lpProcTable;//將系統(tǒng)的winsock方法表中WSPSocket函數(shù)替換成為自己的函數(shù)lpProcTable->lpWSPSocket = WSPSocket;return 0;},4. IP_Mo

30、niter.dll具體代碼,,SOCKET WSPAPI WSPSocket(intaf,inttype,intprotocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUPg,DWORDdwFlags,LPINTlpErrno){MessageBox(NULL, _T("IP_MONITER:WSPSocket run"),

31、"hint", MB_OK);return NextProcTable.lpWSPSocket(af,type,protocol,lpProtocolInfo,g,dwFlags,lpErrno);},4. 進(jìn)一步增加功能,工程名:SimpleFW 前一個(gè)程序功能過于簡(jiǎn)單,僅僅實(shí)現(xiàn)了一個(gè)基本的SPI截獲過程,沒有實(shí)現(xiàn)有價(jià)值的防火墻功能。所以對(duì)該程序進(jìn)行進(jìn)一步的修改,增加以下功能:install改

32、為圖形界面程序,不僅完成安裝和卸載SPI程序,而且記錄下截獲所有程序的狀態(tài)。并在一個(gè)應(yīng)用程序訪問Winsock的時(shí)候,詢問用戶是否允許該程序使用Winsock功能。IP_Moniter.dll監(jiān)視所有應(yīng)用程序?qū)insock的訪問,一旦發(fā)現(xiàn)用戶拒絕的程序,禁止其訪問Winsock。,4.演示效果,一旦安裝以后,會(huì)詢問是否允許特定程序訪問網(wǎng)絡(luò)。,4.演示效果,同時(shí)顯示訪問控制規(guī)則:,4.SimpleFW基本技術(shù)(1),Windows程序

33、設(shè)計(jì)中消息占到了非常重要的地位,幾乎所有的動(dòng)作都是利用消息來觸發(fā)。 但是消息是和窗口綁定在一起的,一般擁有窗口才能接收消息。在特殊情況下,線程也可以接收消息。 用戶定制消息:,4.SimpleFW基本技術(shù)(1),在SimpleFW中,當(dāng)一個(gè)程序訪問Winsock會(huì)彈出對(duì)話框,讓用戶選擇是否允許訪問。這個(gè)過程通過IP_Moniter.dll發(fā)送給UI一個(gè)用戶自定義消息來實(shí)現(xiàn)。在IP_Moniter.h中定

34、義如下:#define WM_QUERY_FW_NOTIFY WM_USER+15在IP_Moniter.cpp中異步發(fā)送消息如下:::PostMessage(UIHandle, WM_QUERY_FW_NOTIFY, NULL, NULL);,4.SimpleFW基本技術(shù)(1),在UI.cpp中通過如下方式來處理自定義消息:case WM_QUERY_FW_NOTIFY://得到應(yīng)用程序路徑TCHA

35、R * pApp = GetAppPath();if(MessageBox(hDlg, pApp, _T("是否允許該程序訪問網(wǎng)絡(luò)"), MB_YESNO|MB_ICONQUESTION|MB_TOPMOST)==IDYES){ SetAppControl(TRUE, pApp);}else{SetAppControl(FALS

36、E, pApp);},4.SimpleFW基本技術(shù)(1),所以我們學(xué)習(xí)用戶自定義消息,是為了掌握DLL和應(yīng)用程序通信時(shí),如何由DLL通知一個(gè)窗口應(yīng)用程序某個(gè)特殊事件,這個(gè)時(shí)候可以通過得到窗口句柄來發(fā)送用戶自定義消息。,4.SimpleFW基本技術(shù)(2),動(dòng)態(tài)加載DLL:即應(yīng)用程序通過動(dòng)態(tài)加載一個(gè)DLL來訪問DLL的功能,通信方向是從應(yīng)用程序--->DLL。動(dòng)態(tài)加載一個(gè)DLL的方法,在UI.cpp中代碼如下:intL

37、oadDLL(){if ((hDll = LoadLibrary(sProvider)) == NULL){_sntprintf(errorInfo, ERROR_INFO_LEN, "%s%s",_T("Can't load dll:"), sProvider);MessageBox(NULL, _T(errorInfo), NULL, MB_OK);retu

38、rn -1;}IoControl= (XF_IO_CONTROL)GetProcAddress(hDll, _T("IOCtrl"));if (IoControl == NULL){MessageBox(NULL, _T("Can't find IoCtrl function"), NULL, MB_OK);return -1;}return 0;

39、},4.SimpleFW基本技術(shù)(2),為什么需要?jiǎng)討B(tài)加載DLL,而不是在編譯應(yīng)用程序的時(shí)候,在鏈接的時(shí)候指定呢?最大的好處是實(shí)現(xiàn)了應(yīng)用程序和訪問的DLL之間的松耦合關(guān)系。 在寫應(yīng)用程序的時(shí)候不需要DLL的導(dǎo)入庫,只需要知道DLL的名字和導(dǎo)出的函數(shù)就可以訪問其動(dòng)能了。 從這里,我們也可以看出為什么任何應(yīng)用程序可以調(diào)用IP_Moniter.dll的功能。,4.SimpleFW基本技術(shù)(3),DLL中的共享內(nèi)存

40、:Windows應(yīng)用程序從Windows2000開始,當(dāng)多個(gè)應(yīng)用程序都訪問同一個(gè)DLL的時(shí)候,每個(gè)應(yīng)用程序都會(huì)有該DLL一個(gè)獨(dú)立的拷貝,如圖,DLL代碼段,DLL數(shù)據(jù)段,DLL代碼段,DLL數(shù)據(jù)段,應(yīng)用程序1,DLL代碼段,DLL數(shù)據(jù)段,應(yīng)用程序2,,,,,映射,映射,拷貝,拷貝,4.SimpleFW基本技術(shù)(3),但是DLL中的某些變量希望所有應(yīng)用程序都共享,即指向同一變量,在SimpleFW中,例如:記錄界面的窗口句柄:HW

41、NDUIHandle=0;例如記錄訪問控制規(guī)則的數(shù)組:XFW_RULErules[XFW_RULE_LEN];都希望在所有應(yīng)用程序中共享,4.SimpleFW基本技術(shù)(3),這個(gè)時(shí)候采取的方法是,將這些變量放到共享的數(shù)據(jù)段中,強(qiáng)制為所有應(yīng)用程序共享:#pragma data_seg(".uniData")HWNDUIHandle=0;#pragma data_seg()#pr

42、agma bss_seg(".uni2Data")XFW_RULErules[XFW_RULE_LEN];#pragma bss_seg()另外還要在一個(gè)IP_Moniter.def文件中提醒鏈接程序,設(shè)置共享段:SECTIONS .uniData READ WRITE SHARED .uni2Data READ WRITE SHARED,4.調(diào)試技巧(1),由于改變了注冊(cè)表,所以如果

43、程序崩潰,注冊(cè)表需要恢復(fù)到原來狀態(tài)。方法一:備份注冊(cè)表,然后恢復(fù)。方法二:調(diào)用MiniSPI工程中的install –remove,4.調(diào)試技巧(2),記住MessageBox函數(shù),該函數(shù)就像C語言中的printf函數(shù),打印各種調(diào)試信息。,5.課程設(shè)計(jì)要求,根據(jù)前面的要求,理解兩個(gè)SPI程序,并自己進(jìn)行擴(kuò)展,增加新的功能,例如:對(duì)防火墻規(guī)則記錄到文件,避免每次都需要用戶確認(rèn)。對(duì)數(shù)據(jù)進(jìn)行截獲,打印出發(fā)送報(bào)文的內(nèi)容。對(duì)數(shù)據(jù)

44、進(jìn)行匹配,發(fā)現(xiàn)數(shù)據(jù)中包含特定字符,立刻報(bào)警。增加日志功能。訪問控制的時(shí)候,為串行化,可以改為并行化。對(duì)報(bào)文內(nèi)容進(jìn)行匹配,發(fā)現(xiàn)木馬或者蠕蟲。美化界面。,5.課程設(shè)計(jì)要求,1.填寫實(shí)驗(yàn)報(bào)告,并打印,班長(zhǎng)上交。實(shí)驗(yàn)報(bào)告填寫說明,參見實(shí)驗(yàn)報(bào)告,5.課程設(shè)計(jì)要求,2.將代碼用e-mail按照規(guī)定格式發(fā)送到指定郵箱lwmemail@gmail.com。代碼用VC++6.0編寫,在XP操作系統(tǒng)下運(yùn)行減小體積,先clean。代碼文件放到

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論