2012-03-27 79 views
-1

我想創建一個dll注入代碼,測試過程記事本的進程ID被硬編碼DLL注入代碼

代碼:

.386 
.model flat, stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib 
include \masm32\include\masm32.inc 
includelib \masm32\lib\masm32.lib 
include \masm32\include\masm32rt.inc 


.data 
hand db "Kernel32.dll",0 
band db "LoadLibraryA",0 
dll db "C:\masm32\kntillusion.dll",0 
msg db "failed",0 
pd dd 840 

.data? 
var dd ? 
handle dd ? 
base dd ? 
written dd ? 
pr dword ? 
dr dword ? 
thd dword ? 
.code 
start: 
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,pd 
TEST EAX, EAX 
JE CodeFail 
mov handle,eax 
invoke VirtualAllocEx,handle,NULL,sizeof dll,MEM_COMMIT,PAGE_READWRITE 
TEST EAX, EAX 
JE CodeFail 
mov base,eax 
invoke WriteProcessMemory,handle,base,addr dll,sizeof dll,offset written 
TEST EAX, EAX 
JE CodeFail 
invoke GetModuleHandle,hand 
TEST EAX, EAX 
JE CodeFail 
mov dr,eax 
invoke GetProcAddress,dr,band 
TEST EAX, EAX 
JE CodeFail 
mov pr,eax 
invoke CreateRemoteThread,handle,0,0,pr,addr dll,0,addr thd 
invoke ExitProcess,0 
CodeFail: 
invoke StdOut, addr msg 
invoke ExitProcess,0 
end start 

當我運行它,我得到了以下錯誤

kinject.exe遇到問題需要關閉。我們爲 抱歉給您帶來不便。

所以和建議 的plaftrom是windows XP SP3

+0

使用調試器來調試您的kinject.exe。 – Abyx 2012-03-27 22:42:41

+0

[format](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)你的代碼!嘗試用q/a在meta.stackoverflow.com上播放一下,然後相當愉快,至少嘗試做出正確的句子。 – 2012-03-27 22:43:02

回答

1

這是一個有點比你有什麼在這裏更復雜。您不能將當前進程中的DLL名稱的地址作爲lpStartAddress參數傳遞給另一個進程中的CreateRemoteThread。您必須在其他進程中注入代碼以使其進行LoadLibrary調用,以將您的自定義DLL引入該進程,然後您的加載邏輯可以將控制權轉移給該DLL中的函數。該函數還必須在遠程進程中由GetProcAddress發現,因爲該地址可能與注入進程中的地址不同。

+0

現貨!如果你想看看它通常如何完成,只需分析一些惡意軟件;) – fileoffset 2012-03-27 23:21:37