All pastes #2060707 Raw Edit

Anonymous

public text v1 · immutable
#2060707 ·published 2011-05-15 20:39 UTC
rendered paste body
format PE console
entry main

include 'win32a.inc'

section '.data' data readable writable
hProcess dd 0
dwBaseAddr dd 0
dwlen dd 0
szPath db 256 dup 0
szPath2 db 256 dup 0
procname db 64 dup 0
szLib db 'kernel32.dll', 0
szFunc db 'LoadLibraryA', 0
lpAppName db 'info', 0
lpKeyName db 'process', 0
lpKeyName2 db 'dllpath', 0
lpIni db '\test.ini', 0

struct PROCESSENTRY32
       dwSize dd 0
       cntUsage dd 0
       th32ProcessID dd 0
       th32DefaultHeapID dd 0
       th32ModuleID dd 0
       cntThreads dd 0
       th32ParentProcessID dd 0
       pcPriClassBase dd 0
       dwFlags dd 0
       szExeFile db 260 dup 0
ends

PE PROCESSENTRY32
hSnap dd 0

section '.text' code executable readable

proc main
invoke GetCurrentDirectoryA, 256, szPath
invoke lstrcatA, szPath, lpIni
invoke GetPrivateProfileStringA, lpAppName, lpKeyName, 0, procname, 256, szPath
invoke GetPrivateProfileStringA, lpAppName, lpKeyName2, 0, szPath2, 256, szPath
.loop:
invoke Sleep, 500
stdcall findprocess, procname
test eax, eax
je .loop
stdcall injectdll, eax, szPath2
invoke ExitProcess, 0
endp

proc findprocess szProcess
invoke CreateToolhelp32Snapshot, 2, 0
mov [hSnap], eax
cmp eax, -1
je .finish2
mov [PE.dwSize], sizeof.PROCESSENTRY32
invoke Process32First, eax, PE
test eax, eax
je .finish3
.loop:
invoke Process32Next, [hSnap], PE
test eax, eax
je .finish3
invoke lstrcmpA, PE.szExeFile, [szProcess]
test eax, eax
jne .loop
invoke CloseHandle, [hSnap]
mov eax, [PE.th32ProcessID]
jmp .finish

.finish3:
invoke CloseHandle, [hSnap]
.finish2:
xor eax, eax
.finish:
pop ebp
ret 4
endp

proc injectdll pid,dllpath
     cmp [pid], 0
     je .finish
     cmp [dllpath], 0
     je .finish
     invoke OpenProcess, PROCESS_ALL_ACCESS, 0, [pid]
     test eax, eax
     je .finish
     mov [hProcess], eax
     invoke lstrlenA, [dllpath]
     inc eax
     mov [dwlen], eax ;store length of dllpath
     invoke VirtualAllocEx, [hProcess], 0, eax, MEM_COMMIT, PAGE_EXECUTE_READWRITE
     test eax, eax
     je .cleanup
     mov [dwBaseAddr], eax
     invoke WriteProcessMemory, [hProcess], eax, [dllpath], [dwlen], 0
     test eax, eax
     je .cleanup
     invoke GetModuleHandleA, szLib
     invoke GetProcAddress, eax, szFunc
     invoke CreateRemoteThread, [hProcess], 0, 0, eax, [dwBaseAddr], 0, 0
     test eax, eax
     je .cleanup
     invoke CloseHandle, eax
.cleanup:
     invoke CloseHandle, [hProcess]
.finish:
     pop ebp
     ret 8
endp

section '.idata' import data readable writable
	library kernel, 'KERNEL32.DLL'

	import kernel,\
	OpenProcess, 'OpenProcess',\
	ExitProcess, 'ExitProcess',\
	CloseHandle, 'CloseHandle',\
	Beep, 'Beep',\
	lstrlenA, 'lstrlenA',\
	VirtualAllocEx, 'VirtualAllocEx',\
	WriteProcessMemory, 'WriteProcessMemory',\
	CreateRemoteThread, 'CreateRemoteThread',\
	LoadLibraryA, 'LoadLibraryA',\
	GetModuleFileNameA, 'GetModuleFileNameA',\
	GetCurrentDirectoryA, 'GetCurrentDirectoryA',\
	lstrcatA, 'lstrcatA',\
	CreateToolhelp32Snapshot, 'CreateToolhelp32Snapshot',\
	Process32First, 'Process32First',\
	Process32Next, 'Process32Next',\
	lstrcmpA, 'lstrcmpA',\
	GetModuleHandleA, 'GetModuleHandleA',\
	GetProcAddress, 'GetProcAddress',\
	GetPrivateProfileStringA, 'GetPrivateProfileStringA',\
	Sleep, 'Sleep'