别急着收藏嘛,直接關注不是更好嗎?
DLL注入系列最後一篇
各位客官讓你們久等了,這篇文章是dll遠程注入的最後一篇,在這篇文章中,《一碳科技》将會教大家如何完成dll的遠程注入工作,并且能成功令我們設計好的dll運行起來。dll遠程注入本身就不是一個漏洞,實際上,dll注入最開始是給開發人員用來維護系統或者其他開發的軟件的,但是到後來就被利用來破壞計算機系統了。
在前兩篇文章中,《一碳科技》已經教大家如何去制作我們自己的dll文件,以及如何得到進程的PID并打開進程,今天這篇文章将教大家如何去将我們的dll遠程注入到目标進程當中,僞裝成目标進程!
文章末尾有源碼獲取方式、注入程序操作效果圖
廢話不多說,上菜!上一篇文章,我們已經成功打開了目标進程,并獲得了目标進程的PID,所以接下來要做的就是,在我們目标進程的内存地址空間中,開辟一個屬于我們的地址空間,為什麼要這麼做呢?下面會講到。這裡我們需要用到一個函數VirtualAllocEx(),這個函數需要5個參數,特别要注意的數最後一個參數,最後一個參數能決定我們接下來的步驟是否能成功。最後一個參數為PAGE_READWRITE,這是什麼意思呢?這表示我們開辟的這一塊區域是可以被應用程序讀寫的。
第一個參數是我們的目标進程句柄,第二個參數填NULL,讓系統自動分配,第三個參數是我們要開辟内存的大小,這個大小一般是表示dll文件路徑的字符串大小,可以用sizeof()函數獲取。
現在給大家講一下,為什麼需要用在目标進程虛拟内存空間裡面開辟一個新的内存。因為,我們接下來要用Creatremotethread()在目标進程中創建一個新的線程,在目标進程中會調用LoadLibraryA()函數,這個函數能載入一個dll文件或者打開一個exe路徑,LoadLibraryA()的參數是一個dll文件路徑(内核dll文件可不寫路徑)或EXE文件的路徑,而這個參數通常是一個字符串,這個字符串是存放在目标進程的虛拟内存空間中的,并不是我們的注入程序當中!
簡單點說,我們的注入程序會将一個字符串地址傳給目标程序的LoadLibraryA(),而這個字符串是在我們的注入程序中創建的,所以,字符串的地址是在注入程序的虛拟内存空間中,并不是在目标程序中!而如果我們直接将字符串從注入程序傳入目标程序的LoadLibraryA()中,就可能會引發一連貫的錯誤,因為你傳給LoadLibraryA()的字符串地址裡面很可能是什麼都沒有的!對這一塊不理解的可以在下方評論區提出哦。
上圖就是向目标程序虛拟内存空間寫入數據的步驟,這個函數需要5個參數,從左往右分别是,目标進程句柄、寫入數據的内存地址、寫入的數據(這裡是字符串)、寫入數據的大小、存放實際寫入數據大小的變量(仔細讀一下),這個參數可以填NULL。
緊接着,我們要獲取LoadLibraryA()函數的地址,注意LoadLibraryA()函數的地址在任何進程中都是相同的,所以我們就不要擔心上面那個問題了。
然後,我們的主角來啦,我們的CreateRemoteThread()函數,這個函數能在遠程進程中創建一個新的線程,并且給調用的函數傳遞參數。這個函數需要7個參數,不過7個參數當中有4個可以設為NULL,剩下的三個參數是遠程進程句柄、創建的線程函數的地址、線程函數的參數,在填寫線程函數的地址的時候,别忘了将它強制轉換成LPTHREAD_START_ROUTINE類型哦!具體的可以看下圖↓
到這裡就可以告一段落了,文中講的不是特别詳細,想要深入了解的粉絲可以私信關鍵字:“DLL注入源碼獲取”,注意關鍵字不能錯哦,錯了機器人就無法識别發送源碼了哦!
效果測試小編選擇的目标程序是wps.exe,首先打開wps,然後開始運行我們的注入程序,在這裡,小編的dll模塊功能是打開系統的寫字闆應用,在這個過程中,電腦安全軟件可能會有提示,我們可以先把它關掉。
然後就可以開始注入了,如下圖寫字闆已經打開,已經成功注入了↓
我們可以查看進程使用的模塊列表,在這裡找到了我們的dll模塊,說明已經成功注入了!
粉絲私信關鍵字:“DLL注入源碼獲取”拿源碼哦!
,