.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
include gdi32.inc
includelib gdi32.lib
DLG_MAIN equ 1
IDC_CUSTOMTXET equ 107
.data?
szBuffer dd 100 dup (?)
PROCESSENTRY32 label byte
dwSize dd ?
cntUsage dd ?
th32ProcessID dd ?
th32DefaultHeapID dd ?
th32ModuleID dd ?
cntThreads dd ?
th32ParentProcessID dd ?
pcPriClassBase dd ?
dwFlags dd ?
szExeFile[MAX-PATH] db 60 dup(?)
.data
dwID dd 00000000h
hProcess dd 00000000h
dllname dd "DLL.dll"
dwSize dd 00000000h
dwWritten dd 00000000h
lpBuf db 00000000h
hThread dd 00000000h
.code
_ProcDlgMain proc uses ebx esi edi hWnd,wMsg,wParam,lParam
mov eax,uMsg
.if eax==WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax==WM_COMMAND
mov ax,wParam
.if ax==IDCANCEL
invoke EndDialog,hWnd,NULL
.elseif ax==IDOK
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
push eax
lea edi,[ebp+PROCESSENTRY32]
invoke Process32First,eax,edi
or eax,eax
jz error
compare: cmp szBuffer,[edi+24h]
jz wegotit
pop eax
invoke Process32Next,eax,edi
or eax,eax
jnz compare
wegotit: mov ebx,dword ptr [edi+8h]
invoke OpenProcess,\
PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,\
ebx
mov hProcess,eax
invoke lstrlenA,dllname
inc eax
mov dwSize,eax
invoke VirtualAllocEx,hProcess,NULL,dwSize,MEM_COMMIT,\
PAGE_READWRITE
or eax,eax
jz fail
mov lpBuf,eax
invoke WriteProcessMemory,hProcess,lpBuf,dllname,dwSize,offset dwWritten
or eax,eax
jz virtualfree
cmp dwWritten,dwSize
jnz virtualfree
invoke LoadLibrary,dllname
invoke CreateRemoteThread,hProcess,NULL,0,eax,\
dllname,0,offset dwID
mov hThread,eax
invoke WaitForSingleObject,hThread,INFINITE
invoke VirtualFreeEx,hProcess,lpBuf,dwSize,MEM_DECOMMIT
invoke CloseHandle,hThread
invoke hProcess
fail: invoke CloseHandle,hProcess
virtualfree: invoke VirtualFreeEx,hProcess,lpBuf,dwSize,MEM_DECOMMIT
invoke CloseHandle,hProcess
.elseif ax==IDC_CUSTOMTEXT
invoke GetDlgItemText,hWnd,IDC_CUSTOMTEXT,\
addr szBuffer,sizeof szBuffer
invoke SetWindowText,hWnd,addr szBuffer
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance, DLG_MAIN,NULL,offset _ProcDlgMain,NULL
invoke ExitProcess,NULL
end start
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课