2012-03-27 12 views
-1

は次のとおりです。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

+0

[形式](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)あなたのコード! meta.stackoverflow.comでq/aで少し演奏してみてください。少なくとも、正しい文章を作ろうとしてください。 –

答えて

1

それはあなたがここに持っているものよりも少し複雑です。現在のプロセスのDLL名のアドレスを別のプロセスのCreateRemoteThreadのlpStartAddress引数として渡すことはできません。別のプロセスにコードを挿入して、カスタムDLLをそのプロセスに持って来るLoadLibrary呼び出しを作成し、ロードロジックがコントロールをそのDLLの関数に転送できるようにする必要があります。この関数は、アドレスがインジェクションプロセスのアドレスと異なる可能性があるため、リモートプロセスのGetProcAddressによっても検出される必要があります。

+0

Spot on!あなたはそれが通常行われているかを見たい場合は、いくつかのマルウェアを分析するだけです;) – fileoffset