Код впрыска Dll - PullRequest
       7

Код впрыска Dll

0 голосов
/ 28 марта 2012

я пытаюсь создать код внедрения 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 столкнулся с проблемой и должен быть закрыт. Мы извините за неудобства.

так и совет плафтром windows xp sp3

1 Ответ

1 голос
/ 28 марта 2012

Это немного сложнее, чем у вас здесь.Вы не можете просто передать адрес имени DLL в вашем текущем процессе в качестве аргумента lpStartAddress в CreateRemoteThread в другом процессе.Вы должны внедрить код в другой процесс, чтобы он вызвал вызов LoadLibrary, чтобы перенести вашу пользовательскую DLL в этот процесс, и тогда ваша логика загрузки может передать управление функции в этой DLL.Эта функция также должна быть обнаружена GetProcAddress в удаленном процессе, поскольку адрес может отличаться от того, который используется в процессе внедрения.

...