Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure InjectDll(ProcessId : DWord; DllName : pAnsiChar);
- var
- hProcess, hThread, BytesWritten, ThreadId : Cardinal;
- RemoteString, RemoteThread : Pointer;
- begin
- hProcess := OpenProcess(PROCESS_ALL_ACCESS, false, ProcessId);
- RemoteString := VirtualAllocEx(hProcess, nil, StrLen(DllName) + 1, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);
- WriteProcessMemory(hProcess, RemoteString, Pointer(DllName), StrLen(DllName) + 1, BytesWritten);
- RemoteThread := GetProcAddress(GetModuleHandle('kernel32.dll'), 'LoadLibraryA');
- hThread := CreateRemoteThread(hProcess, nil, 0, RemoteThread, RemoteString, 0, ThreadId);
- WaitForSingleObject(hThread, INFINITE);
- CloseHandle(hThread);
- VirtualFreeEx(hProcess, RemoteString, StrLen(DllName) + 1, MEM_RELEASE);
- CloseHandle(hProcess);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement