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

正文內(nèi)容

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

2024-10-12 08:49本頁面
  

【正文】 使用 VirtualAllocEx函數(shù)在 Explo。 Q260046902 專業(yè)做論文 XXIX 打 開 遠 程 進 程把 D L L 文 件 名 復(fù) 制 到 遠 程 地 址 空 間得 到 加 載 D L L 文 件 的 函 數(shù) 地 址創(chuàng) 建 遠 程 線 程 啟 動 D L L 調(diào) 用 函 數(shù) 圖 遠程線程注入流程圖 假設(shè)我們獲得到對方瀏覽器進程 (Explorer),那么我們可以通過通過一下過程來進行 遠程的線程 注 入。至此,成功完成注入。然后,我們可以建立 LoadLibraryW 這個線程來啟動我們的 DLL, LoadLibraryW函數(shù)是在 中定義的,用來加載 DLL 文件,它只有一個參數(shù),就是 DLL文件的絕對路徑名 pszLibFileName,但是由于 DLL 是在遠程進程內(nèi)調(diào)用的,所以我們首先還需要將這個文件名復(fù)制到遠程地址空間:(否則遠程線程讀不到這個參數(shù)) . 然后計算 LoadLibaryW 的入口地址。所以我們創(chuàng)建一個遠程線程進入遠程進程的地址空間,然后啟動我們的 DLL。但是我們要注入的進程是客戶機上的遠程進程,而不是本地進程。 他指的是通過在另一個運行的進程中創(chuàng)建遠程線程的方法進人那個線程的內(nèi)存地址空間。雖然說先更改 dllcache 目錄中的備份再修改 DLL 文件本身可以繞過這個保護,但是可以想見的是微軟在未來必將更加小心地保護重要的 DLL 文件,同時特洛伊 DLL 方法本身有著一些漏洞(例如修復(fù)安裝、安裝補丁、檢查數(shù)字簽名等方法都有可能導(dǎo)致特洛伊 DLL 失效),所以這個方法也不能算是 DLL 木馬的最優(yōu)選擇。這樣理論上只要木馬編寫者通過 SOCKET 遠程輸入一定的暗號,就可以控制 (木馬DLL)做任何操作。比較高級一點有 使用特洛伊 DLL 來插入 DLL 特洛伊 DLL 的工作原理是替換常用的 DLL 文件,將正常的調(diào)用轉(zhuǎn)發(fā)給原 DLL,截獲并處理特定的消息。方法有好幾種,前面我們講到的HOOK 注入就是一種,但勾子特別是系統(tǒng)勾子會消耗消息處理時間,降低系統(tǒng)性能。那么我們編寫的 DLL 作為進程的一部分,從而成功實現(xiàn)了隱藏。 DLL 文件沒有程序邏輯,由多個功能函數(shù)構(gòu)成,但他并不能獨立運行,一般都是由進程加載調(diào)用。 那么如何不使用進程使用什么呢。那么如何實現(xiàn)進程的隱藏呢,我想有兩種方法,第一種是讓系統(tǒng)管理員看不見(或視而不見)你的進程,第二種則是不使用進程。如何隱藏自己就顯得非常重要。 如何利用 DLL 技術(shù)實現(xiàn)進程隱藏,下章將進行介紹。 我們把要實現(xiàn)的幾個功能都封裝成了 DLL 模塊,不僅是從資源利用的角度考慮,更重要的是為進程隱藏做準(zhǔn)備。 這兩種方法都能夠提供包含在 DLL 中的必要符號的地址。 這種用法假設(shè)你知道你需要的符號名被 DLL 創(chuàng)建程序賦予了序號值 2。這意味著GetProcAddress 函數(shù)只接受 ANSI 字符串,決不能將 Unicode 字符串傳遞給該函數(shù),因為編譯器 /鏈接程序總是將符號名作 為 ANSI 字符串存儲在 DLL 的輸出節(jié)中。第一種形式是以 0 結(jié)尾的字符串的地址,它包含了你想要其地址的符號的名字: FARPROC pfn = GetProcAddress(hinstDll, SomeFuncInDll)。 參數(shù) hinstDll 是調(diào)用 LoadLibrary(Ex)或 GetModuleHandle 函數(shù)而返回的,它用于設(shè)定包含符號的 DLL 的句柄。 5)PATH 環(huán)境變量中列出的目錄。 3)Windows 的系統(tǒng)目錄。但是,如果設(shè)定了 LOAD_WITH_ALTERED_SEARCH_PATH 標(biāo)志,那么LoadLibraryEx 函數(shù)就按照下面的順序來搜索文件: 1)pszDLLPathName 參數(shù)中設(shè)定的目錄。 LOAD_WITH_ALTERED_SEARCH_PATH標(biāo)志用于改變 LoadLibraryEx用來查找特定的DLL 文件時使用的搜索算法。借助映射的 .exe 文件的 HINSTANCE 值,就能夠訪問文件中的資源。然后可以在調(diào)用加載資源的函數(shù)時,使用 LoadLibraryEx 函數(shù)返回的HINSTANCE 值。 由于下面幾個原因,該標(biāo)志是非常有用的。例如,當(dāng)一個 DLL 被映射到進程的地址空間中時,系統(tǒng)要查看 DLL 中的某些信息,以確定應(yīng)該將哪些頁面保護屬性賦予文件的不同的節(jié)。 LOAD_LIBRARY_AS_DATAFILE標(biāo)志與 DONT_RESOLVE_DLL_REFERENCES標(biāo)志相類似,因為系統(tǒng)只是將 DLL 映射到進程的地址空間中,就像它是數(shù)據(jù)文件一樣。當(dāng)系統(tǒng)將一個 DLL 映射到進程的地址空間中時,它也要查看該 DLL 是否需要其他的 DLL,并且自動加載這些 DLL。DONT_RESOLVE_DLL_REFERENCES 標(biāo)志使系統(tǒng)不必調(diào)用 DllMain 函數(shù)就能映射文件映Q260046902 專業(yè)做論文 XXV 像。通常情況下,當(dāng) DLL 被映射到進程的地址空間中 時, 系統(tǒng)要調(diào)用 DLL 中的一個特殊函數(shù),即 DllMain(本章后面介紹)。對于參數(shù) dwFlags,必須將它設(shè)置為 0,或者設(shè)置為DONT_RESOLVE_DLL_REFERENCES,LOAD_LIBARY_AS_DATAFILE 和LOAD_WITH_ALTERED_SEARCH_PATH 等標(biāo)志的一個組合。 LoadLibaryEx 函數(shù)輔助參數(shù),即 hFile 和 dwFlags。兩個函數(shù)返回的 HINSTANCE 值用于標(biāo)識文件映象映射到的虛擬內(nèi)存地址。 HINSTANCE LoadLibaryEx(pctstr psxDllPathName,HANDLE hFile,DOWORD dwFlags)。 進程中的線程可以通過下面兩個函數(shù)將 DLL 映射到進程的地址 空間。 7)建立不引用輸入函數(shù) /變量的 C/C++源文件 8)編譯器為每個 C/C++源文件生成 .OBJ 源文件 9)鏈接程序?qū)⒏鱾€ .OBJ 模塊鏈接起來,生成 .EXE 文件 運行應(yīng)用程序: 10)加載程序為 .EXE 創(chuàng)建模塊地址空進程的主線程開始執(zhí)行,應(yīng)用程序啟動運行。 圖 DLL并且鏈接到它里面的符號。Q260046902 專業(yè)做論文 XXIII 該線程可以將 DLL 顯示加載到進程的地址空間,獲得 DLL 中包含的函數(shù)的虛擬內(nèi)存地址, 然后使用內(nèi)存地址調(diào)用該函數(shù)。 顯示調(diào)用:因為我們正是使用 DLL 顯示調(diào)用來實現(xiàn)程序的,所以著重介紹一下。操作系統(tǒng)在加載使用可執(zhí)行程序時加載 DLL。所有被應(yīng)用程序調(diào)用的 DLL 文件都會在應(yīng)用程序 EXE 文件加載時被加載在到內(nèi)存中。 LIB 文件中也包含了對應(yīng)的 DL L 文件名(但不是完全的路徑名),鏈接程序?qū)⑵浯鎯υ? EXE 文件內(nèi)部。 LIB 文件作為 DLL 的替代文件被編譯到應(yīng)用程序項目中。程序員在建立一個 DLL 文件時,鏈接程序會自動生成一個與之對應(yīng)的 LIB 導(dǎo)入文件。 隱式的調(diào)用:需要把產(chǎn)生動態(tài)連接庫時產(chǎn)生的 .LIB 文件加入到應(yīng)用程序的工程中,想使用 DLL 中的函數(shù)時,只須說明一下。擁有單個頭文件,供 DLL 創(chuàng)建程序和可執(zhí)行模塊的創(chuàng)建程序使用,就可以大大簡化維護工作。你的 DLL 的所有源代碼模塊都應(yīng)該包含這個頭文件。 當(dāng)創(chuàng)建 DLL 模塊時,首先應(yīng)該建立一個頭文件,該文件包含了你想要輸出的 變量(類型和名字)和函數(shù)(原型和名字)。此外,只Q260046902 專業(yè)做論文 XXII 有當(dāng)使用同一個供應(yīng)商提供的編譯器對輸入 C++類的模塊進行編譯時,才能輸出 C++類。 DLL 可以將變量、函數(shù)或 C/C++類輸出到其他模塊??梢酝ㄟ^創(chuàng)建必須在 DLL 中生存的 COM對象來擴展 WindowsExplorer的外殼程序。 Windows 使得某些特性只能為 DLL 所用。當(dāng)然,你仍然可以成功地調(diào)用該函數(shù)。即使你實際上從不調(diào)用該函數(shù),情況也是這樣。開發(fā)人員常常想要調(diào)用新的函數(shù)(如果它們存在于主機的 Windows 版本上的話)。 它們有助于解決平臺差異。應(yīng)用程序常常使用 DLL 對自己進行本地化。多個應(yīng)用程序能夠使用 DLL 來共享這些資源。 它們有助于資源的共享。如果所有的應(yīng)用程序都鏈接到這個靜態(tài)庫,那么 sprintf、 strcpy 和 malloc 等函數(shù)的代碼就要多次存在于內(nèi)存中。 C/C++運行期庫就是個極好的例子。 它們有助于節(jié)省內(nèi)存。如果在軟件開發(fā)過程中不同的工作小組在不同的模塊上工作,那么這個項目管理起來比較容易。系統(tǒng)允許 VisualBasic 程序加載 C++DLL、 CobolDLL和 FortranDLL 等。可以選擇手頭擁有的最好的語言來編寫DLL。例如,當(dāng)一家公司開發(fā)了一種產(chǎn)品,想要讓其他公司改進或增強該產(chǎn)品的功能時,那么就可以使用 DLL。 下面是為什么要使用 DLL 的一些原因: 它們擴展了應(yīng)用程序的特性 。 Windows 還配有若干別的DLL,它們提供了用于執(zhí)行一些特殊任務(wù)的函數(shù)。 WindowsAPI 中的所有函數(shù)都包含在 DLL 中。 WINDOWS 自己就將一些主要的系統(tǒng) 功能以 DLL 模塊的形式出現(xiàn)。在運行時,只有當(dāng) EXE 程序確實要調(diào)用這些 DLL 的情況下,系統(tǒng)才把他們轉(zhuǎn)載到內(nèi)存空間中。 WINDOWS 系統(tǒng)平臺提供一種有效的編譯與運行環(huán)境,他可以將獨立的程序模塊創(chuàng)建為較小的 DLL 文件。如果把所有模塊的源代碼都靜態(tài)編譯到整個應(yīng)用程序 EXE 中。每個 DLL 是一個單獨的模塊,可以分別完成 不同的功能。 我們先來了解一下 DLL。因此,我們必須設(shè)法不讓他們發(fā)現(xiàn)有監(jiān)控進程的存在。更重要的是 我們要把客戶端的程序駐留在客戶機上,這當(dāng)然是客戶機用戶所不愿意的。 在后 續(xù)部分,我們將介紹利用 HOOK 來實現(xiàn)鍵盤跟蹤 。勾子程序就是用來監(jiān)視消息的,它是否執(zhí)行依賴于消息是否到來,只要有待查消息它就執(zhí)行一次,否則就一直處于等待狀態(tài)。Windows 提供的 API 函 數(shù) CallNextHookEx 的作用就是調(diào)用勾子鏈中下一個勾子過程。在程序的每個分支中,可根據(jù) wparam和 lparam 這兩個消息參數(shù)進行所需要的處理。 不管是哪種類型的勾子程序,其程序框架基本是一致的,都是一個多分支程序結(jié)構(gòu)。 勾子類型標(biāo)識符 用途 適用范圍 WH_CallWndProc 監(jiān)視發(fā)給窗口消息 系統(tǒng)或進程 WH_CBT 監(jiān)視窗口變化,焦點設(shè)置等信息 系統(tǒng)或進程 WH_Debug 用來確 定是否執(zhí)行其他勾子的勾子 系統(tǒng)或進程 WH_GetMessage 監(jiān)視投遞到消息隊列中的消息 系統(tǒng)或進程 Q260046902 專業(yè)做論文 XIX WH_JournalRecord 監(jiān)視及記錄輸入事件 系統(tǒng) WH_JournalPlayBack 回放記錄的輸入事件 系統(tǒng) WH_KeyBoard 監(jiān)視鍵盤消息 系統(tǒng)或進程 WH_Mouse 監(jiān)視鼠標(biāo)消息 系統(tǒng)或進程 WH_MsgFilter 監(jiān)視菜單滾動條消息框?qū)υ捒蛳? 系統(tǒng)或進程 WH_Shell 監(jiān)視有關(guān)外殼程序的消息 系統(tǒng)或進程 表 函數(shù) UnHookWindowsHookEx 只有一個參數(shù),是待拆除勾子的句柄。參數(shù) 2 是勾子處理程序地址,該地址由函數(shù) GetProcAddress 獲得;參數(shù) 3是勾子處理程序句柄;參數(shù) 4是被監(jiān)視線程的標(biāo)志符,若為 0則監(jiān)視所有線程。 Windows 提供的 API 函數(shù) SetWindowsHookEx 來安裝勾子,通過這個函數(shù)可以將一個勾子處理程序添加到相應(yīng)的勾子鏈中來監(jiān)視 WINDOWS 消息,在不需要監(jiān)視系統(tǒng)消息時可以調(diào)用函數(shù) UnHookWindowsHookEx 拆除勾子。這個參數(shù)的值依賴于 Hook 類型,每一種 Hook 都有自己的 Hook 代碼特征字符集。 HookProc 是應(yīng)用程序定義的名字。 WINDOWS 為每一個勾子建一個勾子鏈,每安裝一個勾子,它總是被排在相應(yīng)勾子鏈的鏈頭上,擁有對消息的第一處理權(quán)。勾子分為專用勾子和全局勾子,線程專用勾子只監(jiān)視制定的線程,要監(jiān)視系統(tǒng)中Windows 系統(tǒng) 應(yīng)用程序 勾子程序 Q260046902 專業(yè)做論文 XVIII 所有的線程,必須用到全局勾子。在安裝鉤子程序之前,系統(tǒng)直接處理應(yīng)用程序的消息,此時消息傳遞路徑如圖虛線所示;而安裝勾子后,每當(dāng)特定的消息發(fā)出,在沒有到達目的窗口前,勾子程序就先捕獲此消息,其內(nèi)置的勾子函數(shù)就可以對消息進行處理,可以改變消息后才向系統(tǒng)傳遞,也可以不修改繼續(xù)傳遞,還可以丟棄此消息,從而中止消息的傳遞,這是消息的傳遞路徑如圖 。每當(dāng)特定的消息發(fā)出,在沒有到達目的窗口前,勾子程序就先捕獲該消息,亦即勾子函數(shù)先得到控制權(quán)。勾子機制允許應(yīng)用程序截獲處理 window消息或特定
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1