freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計任務(wù)書-局域網(wǎng)監(jiān)控技術(shù)研究與實現(xiàn)-資料下載頁

2025-09-29 08:49本頁面

【導(dǎo)讀】畢業(yè)設(shè)計(論文)任務(wù)書。擬題單位電子科技大學(xué)計算機學(xué)院審題人郭建東。1.對局域網(wǎng)監(jiān)控領(lǐng)域的相關(guān)技術(shù)進行研究。2.完成一種局域網(wǎng)監(jiān)控軟件的設(shè)計。3.對設(shè)計的軟件程序?qū)崿F(xiàn)。起止時間:2020年3月10日至2020年6月10日。學(xué)生姓名李箏專業(yè)算機科學(xué)與技術(shù)班次21082020. 指導(dǎo)教師郭建東,王慶先。設(shè)計地點電子科技大學(xué)UESTC-INTELIXA實驗室。成果形式軟件產(chǎn)品

  

【正文】 文件生成 .OBJ 模塊 4) 鏈接程序?qū)⑸傻?.OBJ 模塊鏈接起來 5) 如果至少輸出一個函數(shù) /變量,那么鏈接程序生成 .LIB 文件 創(chuàng)建 EXE: 6)建立帶有輸入原型 /結(jié)構(gòu) /符 號的頭文件(視情況而定)。 7)建立不引用輸入函數(shù) /變量的 C/C++源文件 8)編譯器為每個 C/C++源文件生成 .OBJ 源文件 9)鏈接程序?qū)⒏鱾€ .OBJ 模塊鏈接起來,生成 .EXE 文件 運行應(yīng)用程序: 10)加載程序為 .EXE 創(chuàng)建模塊地址空進程的主線程開始執(zhí)行,應(yīng)用程序啟動運行。 顯示加載 DLL: 11)一個線程調(diào)用 Loadlibary(Ex)函數(shù),將 DLL 加載到遠(yuǎn)程進程的地址空間這時可以調(diào)用 GetProcAddress 以便間接引用 DLL 的輸出符號。 進程中的線程可以通過下面兩個函數(shù)將 DLL 映射到進程的地址 空間。 HINSTANCE LoadLibary(PCTSTR psxDllPathName)。 HINSTANCE LoadLibaryEx(pctstr psxDllPathName,HANDLE hFile,DOWORD dwFlags)。 這兩個函數(shù) 均用于找出用戶系統(tǒng)上的文件映象,并將 DLL 的文件映射到調(diào)用進程的地址空間中。兩個函數(shù)返回的 HINSTANCE 值用于標(biāo)識文件映象映射到的虛擬內(nèi)存地址。如果 DLL 不能被映射到進程的地址空間,則返回 NULL。 LoadLibaryEx 函數(shù)輔助參數(shù),即 hFile 和 dwFlags。參數(shù) hFile 保留供將來使用,現(xiàn)在必須是 NULL。對于參數(shù) dwFlags,必須將它設(shè)置為 0,或者設(shè)置為DONT_RESOLVE_DLL_REFERENCES,LOAD_LIBARY_AS_DATAFILE 和LOAD_WITH_ALTERED_SEARCH_PATH 等標(biāo)志的一個組合。 DONT_RESOVLE_DLL_REFERENCES標(biāo)志用于告訴系統(tǒng)將 DLL映射到調(diào)用進程的地址空間中。通常情況下,當(dāng) DLL 被映射到進程的地址空間中 時, 系統(tǒng)要調(diào)用 DLL 中的一個特殊函數(shù),即 DllMain(本章后面介紹)。該函數(shù)用于對 DLL 進行初始化。DONT_RESOLVE_DLL_REFERENCES 標(biāo)志使系統(tǒng)不必調(diào)用 DllMain 函數(shù)就能映射文件映Q260046902 專業(yè)做論文 XXV 像。 此外, DLL 能夠輸入另一個 DLL 中包含的函數(shù)。當(dāng)系統(tǒng)將一個 DLL 映射到進程的地址空間中時,它也要查看該 DLL 是否需要其他的 DLL,并且自動加載這些 DLL。當(dāng)DONT_RESOLVE_DLL_REFERENCES 標(biāo)志被設(shè)定時,系統(tǒng)并不自動將其他的 DLL 加載到進程的地址空間中。 LOAD_LIBRARY_AS_DATAFILE標(biāo)志與 DONT_RESOLVE_DLL_REFERENCES標(biāo)志相類似,因為系統(tǒng)只是將 DLL 映射到進程的地址空間中,就像它是數(shù)據(jù)文件一樣。系統(tǒng)并不花費額外的時間來準(zhǔn)備執(zhí)行文件中的任何代碼。例如,當(dāng)一個 DLL 被映射到進程的地址空間中時,系統(tǒng)要查看 DLL 中的某些信息,以確定應(yīng)該將哪些頁面保護屬性賦予文件的不同的節(jié)。如果設(shè)定了 LOAD_LIBRARY_AS_DATAFILE 標(biāo)志,系統(tǒng)將以它要執(zhí)行文件中的代碼時的同樣方式來設(shè)置頁面保護屬性 。 由于下面幾個原因,該標(biāo)志是非常有用的。首先,如果有一個 DLL(它只包含資源,但不包含函數(shù)),那么可以設(shè)定這個標(biāo)志,使 DLL 的文件映像能夠映射到進程的地址空間中。然后可以在調(diào)用加載資源的函數(shù)時,使用 LoadLibraryEx 函數(shù)返回的HINSTANCE 值。通常情況下,加載一個 .exe 文件,就能夠啟動一個新進程,但是也可以使用 LoadLibraryEx 函數(shù)將 .exe 文件的映像映射到進程的地址空間中。借助映射的 .exe 文件的 HINSTANCE 值,就能夠訪問文件中的資源。由于 .exe 文件沒有 DllMain函數(shù), 因此,當(dāng)調(diào)用 LoadLibraryEx 來加載一個 .exe 文件時,必須設(shè)定LOAD_LIBRARY_AS_DATAFILE 標(biāo)志。 LOAD_WITH_ALTERED_SEARCH_PATH標(biāo)志用于改變 LoadLibraryEx用來查找特定的DLL 文件時使用的搜索算法。通常情況下, LoadLibraryEx 按照第 19 章講述的順序進行文件的搜索。但是,如果設(shè)定了 LOAD_WITH_ALTERED_SEARCH_PATH 標(biāo)志,那么LoadLibraryEx 函數(shù)就按照下面的順序來搜索文件: 1)pszDLLPathName 參數(shù)中設(shè)定的目錄。 2)進程的當(dāng)前目錄。 3)Windows 的系統(tǒng)目錄。 4)Windows 目錄。 5)PATH 環(huán)境變量中列出的目錄。 Q260046902 專業(yè)做論文 XXVI 一旦 DLL 模塊被顯式加載,線程就必須獲取它要引用的符號的地址,方法是調(diào)用下面的函數(shù): FARPROC GetProcAddress( HINSTANCE hinstDll, PCSTR pszSymbolName)。 參數(shù) hinstDll 是調(diào)用 LoadLibrary(Ex)或 GetModuleHandle 函數(shù)而返回的,它用于設(shè)定包含符號的 DLL 的句柄。參數(shù) pszSymbolName 可以采用兩種形式。第一種形式是以 0 結(jié)尾的字符串的地址,它包含了你想要其地址的符號的名字: FARPROC pfn = GetProcAddress(hinstDll, SomeFuncInDll)。 注意,參數(shù) pszSymbolName 的原型是 PCSTR,而不是 PCTSTR。這意味著GetProcAddress 函數(shù)只接受 ANSI 字符串,決不能將 Unicode 字符串傳遞給該函數(shù),因為編譯器 /鏈接程序總是將符號名作 為 ANSI 字符串存儲在 DLL 的輸出節(jié)中。 參數(shù) pszSymbolName 的第二種形式用于指明你想要其地址的符號的序號: FARPROC pfn = GetProcAddress(hinstDll, MAKEINTRESOURCE(2))。 這種用法假設(shè)你知道你需要的符號名被 DLL 創(chuàng)建程序賦予了序號值 2。同樣,我要再次強調(diào), Microsoft 非常反對使用序號,因此你不會經(jīng)??吹?GetProcAddress的這個用法。 這兩種方法都能夠提供包含在 DLL 中的必要符號的地址。如果 DLL 模塊的輸出節(jié)中不存在你需要的符 號, GetProcAddress 就返回 NULL,表示運行失敗。 我們把要實現(xiàn)的幾個功能都封裝成了 DLL 模塊,不僅是從資源利用的角度考慮,更重要的是為進程隱藏做準(zhǔn)備。我們在調(diào)用這個 DLL 模塊時所使用的是顯示調(diào)用方式。 如何利用 DLL 技術(shù)實現(xiàn)進程隱藏,下章將進行介紹。 Q260046902 專業(yè)做論文 XXVII 遠(yuǎn)程線程注入 客戶端程序要駐留在客戶機上,而且不能讓用戶發(fā)現(xiàn)。如何隱藏自己就顯得非常重要。在 WIN9X 中,只需要將系統(tǒng)進程注冊為系統(tǒng)服務(wù)就能夠從 查看器中隱形,但WINNT 中就不同了,無論從端口,啟動文件上如何巧妙 地隱藏自己,始終不能欺騙WINNT 的任務(wù)管理器。那么如何實現(xiàn)進程的隱藏呢,我想有兩種方法,第一種是讓系統(tǒng)管理員看不見(或視而不見)你的進程,第二種則是不使用進程。 在 Windows 中有多種方法能夠看到進程的存在: PSAPI( Process Status API), PDH( Performance Data Helper), ToolHelp API,如果我們能夠欺騙用戶或入侵檢測軟件用來查看進程的函數(shù)(例如截獲相應(yīng)的 API 調(diào)用,替換返回的數(shù)據(jù)),我們就完全能實現(xiàn)進程隱藏,但是一來我們并不知道用戶 /入侵檢測軟件使用 的是什么方法來查看進程列表,二來如果我們有權(quán)限和技術(shù)實現(xiàn)這樣的欺騙,我們就一定能使用其它的方法更容易的實現(xiàn)進程的隱藏。 那么如何不使用進程使用什么呢。我們剛才介紹了 DLL。 DLL 文件沒有程序邏輯,由多個功能函數(shù)構(gòu)成,但他并不能獨立運行,一般都是由進程加載調(diào)用。如果我們編寫一個 DLL,讓別的進程調(diào)用他,無論入侵檢測軟件還是進程列表,都只會出現(xiàn)調(diào)用的進程而不會出現(xiàn) DLL,如果那個進程是可信進程,(例如是 )用戶就不會懷疑了。那么我們編寫的 DLL 作為進程的一部分,從而成功實現(xiàn)了隱藏。 那么 現(xiàn)在要解決的問題就是如何來啟動 DLL。方法有好幾種,前面我們講到的HOOK 注入就是一種,但勾子特別是系統(tǒng)勾子會消耗消息處理時間,降低系統(tǒng)性能。只有在必要的時候才安裝勾子,在使用完畢后要及時卸載。比較高級一點有 使用特洛伊 DLL 來插入 DLL 特洛伊 DLL 的工作原理是替換常用的 DLL 文件,將正常的調(diào)用轉(zhuǎn)發(fā)給原 DLL,截獲并處理特定的消息。例如,我們知道 WINDOWS 的 Socket 的函數(shù)都是存放在 中的,那么我們自己寫一個 文件,替換掉原先的 (將原 先的 DLL 文件重命名為 )我們的 只做兩件事,一是如果遇到不認(rèn)識的調(diào)用,就直接轉(zhuǎn)發(fā)給 (使用函數(shù)Q260046902 專業(yè)做論文 XXVIII 轉(zhuǎn)發(fā)器 forward);二是遇到特殊的請求(事先約定的)就解碼并處理。這樣理論上只要木馬編寫者通過 SOCKET 遠(yuǎn)程輸入一定的暗號,就可以控制 (木馬DLL)做任何操作。特洛伊 DLL 技術(shù)是比較古老的技術(shù),因此微軟也對此做了相當(dāng)?shù)姆婪?,?Win2K 的 system32 目錄下有一個 dllcache 的目錄,這個目錄中存放著大量的 DLL 文件( 也包括一些重要的 exe 文件),這個是微軟用來保護 DLL 的法寶,一旦操作系統(tǒng)發(fā)現(xiàn)被保護的 DLL 文件被篡改(數(shù)字簽名技術(shù)),它就會自動從 dllcache中恢復(fù)這個文件。雖然說先更改 dllcache 目錄中的備份再修改 DLL 文件本身可以繞過這個保護,但是可以想見的是微軟在未來必將更加小心地保護重要的 DLL 文件,同時特洛伊 DLL 方法本身有著一些漏洞(例如修復(fù)安裝、安裝補丁、檢查數(shù)字簽名等方法都有可能導(dǎo)致特洛伊 DLL 失效),所以這個方法也不能算是 DLL 木馬的最優(yōu)選擇。 我們在這里所使用的技術(shù)是遠(yuǎn)程線程注入技術(shù)。 他指的是通過在另一個運行的進程中創(chuàng)建遠(yuǎn)程線程的方法進人那個線程的內(nèi)存地址空間。我們可以通過CreateThread 函數(shù)創(chuàng)建線程,被創(chuàng)建的新線程與主線程共享地址空間以及其他資源。但是我們要注入的進程是客戶機上的遠(yuǎn)程進程,而不是本地進程。所以我們使用的是CreateRemoteThread 在一個遠(yuǎn)程進程內(nèi)創(chuàng)建新線程,被創(chuàng)建的遠(yuǎn)程線程就可以共享遠(yuǎn)程進程的地址空間。所以我們創(chuàng)建一個遠(yuǎn)程線程進入遠(yuǎn)程進程的地址空間,然后啟動我們的 DLL。首先,我們通過 OpenProcess 來打開我們試圖嵌入的進程,由于我們后面需要寫 入遠(yuǎn)程進程的內(nèi)存地址空間并建立遠(yuǎn)程線程,所以需要申請足夠的權(quán)限。然后,我們可以建立 LoadLibraryW 這個線程來啟動我們的 DLL, LoadLibraryW函數(shù)是在 中定義的,用來加載 DLL 文件,它只有一個參數(shù),就是 DLL文件的絕對路徑名 pszLibFileName,但是由于 DLL 是在遠(yuǎn)程進程內(nèi)調(diào)用的,所以我們首先還需要將這個文件名復(fù)制到遠(yuǎn)程地址空間:(否則遠(yuǎn)程線程讀不到這個參數(shù)) . 然后計算 LoadLibaryW 的入口地址。最后我們 CreateRemoteThread 在遠(yuǎn)程進程內(nèi)調(diào)用 LoadLibaryW 函數(shù),啟動我們的 DLL 文件。至此,成功完成注入。整個過程如 圖。 Q260046902 專業(yè)做論文 XXIX 打 開 遠(yuǎn) 程 進 程把 D L L 文 件 名 復(fù) 制 到 遠(yuǎn) 程 地 址 空 間得 到 加 載 D L L 文 件 的 函 數(shù) 地 址創(chuàng) 建 遠(yuǎn) 程 線 程 啟 動 D L L 調(diào) 用 函 數(shù) 圖 遠(yuǎn)程線程注入流程圖 假設(shè)我們獲得到對方瀏覽器進程 (Explorer),那么我們可以通過通過一下過程來進行 遠(yuǎn)程的線程 注 入。 1) 獲得 Explorer 進程的進程 ID 2) 使用 OpenProcess 函數(shù)打開 Explorer 進程 hExplorerProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,dwExplorerProcessId) 3) 將 DLL 的文件名復(fù)制到進程 Explorer 進程的地址空間: 計算 DLL 路徑名需要的內(nèi)存空間, int memorysize=(1+strlen(szDLLFileName))*sizeof(char)。 使用 VirtualAllocEx函數(shù)在 E
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1