程序错误不是一般的多 呵呵 感觉Liebek兄就压根没理解注入的原理
帮你改改
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
szCalss db 'Notepad',0
.data?
hWnd dd ?
hProcess dd ?
Pid dd ?
Written dd ?
dwTid dd ?
lpMessageBox dd ?
.const
szMessageBox db 'MessageBoxA',0
szUser32dll db 'User32.dll',0
.code
REMOTE_CODE_START:
_lpMessageBox dd ?
Shellcode proc
call @F
@@:
pop ebx
sub ebx,offset @B
push NULL
push NULL
push NULL
push NULL
call dword ptr [ebx+_lpMessageBox]
ret
Shellcode endp
REMOTE_CODE_END:
start:
invoke GetModuleHandle,addr szUser32dll
mov ebx,eax
invoke GetProcAddress,ebx,addr szMessageBox
mov lpMessageBox,eax
invoke FindWindow,addr szCalss,0
invoke GetWindowThreadProcessId, eax, addr Pid
invoke OpenProcess,PROCESS_CREATE_THREAD or PROCESS_VM_WRITE+\
PROCESS_VM_OPERATION,FALSE,Pid
mov hProcess, eax
invoke VirtualAllocEx,hProcess,NULL, REMOTE_CODE_END-REMOTE_CODE_START, MEM_COMMIT, PAGE_EXECUTE_READWRITE
mov hWnd, eax
invoke WriteProcessMemory, hProcess, hWnd, offset REMOTE_CODE_START, REMOTE_CODE_END-REMOTE_CODE_START, addr Written
invoke WriteProcessMemory,hProcess,hWnd,offset lpMessageBox,sizeof dword,addr Written
mov eax,hWnd
add eax,Shellcode-REMOTE_CODE_START
invoke CreateRemoteThread, hProcess, 0, 0, eax, 0, 0, 0
invoke ExitProcess, 0
end start