-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSource.cpp
More file actions
59 lines (45 loc) · 1.32 KB
/
Source.cpp
File metadata and controls
59 lines (45 loc) · 1.32 KB
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
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
DWORD _Proceso(const char* proceso) {
DWORD procID = 0;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap == INVALID_HANDLE_VALUE) {
PROCESSENTRY32 procEntry;
procEntry.dwSize = sizeof(procEntry);
if (Process32First(hSnap, &procEntry)) {
do {
if (!_stricmp(procEntry.szExeFile, proceso)) {
procID = procEntry.th32ProcessID;
break;
}
} while (Process32Next(hSnap, &procEntry));
}
}
CloseHandle(hSnap);
return procID;
}
using namespace std;
int main() {
DWORD procID = 0;
char DLL_PATH[300], proc[300];
cout << "Nombre del proceso ---> "; cin >> proc;
cout << "Ubicacion del DLL ---> "; cin >> DLL_PATH;
while (!procID) {
procID = GetProcessId(proc);
Sleep(60);
}
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 0);
if (hProc && hProc == INVALID_HANDLE_VALUE) {
void* loc = VirtualAllocEx(hProc, 0, MAX_PATH, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
WriteProcessMemory(hProc, loc, DLL_PATH, strlen(DLL_PATH) + 1, 0);
HANDLE hThread = CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, loc, 0, 0);
if (hThread) {
CloseHandle(hThread);
}
}
if (hProc)
CloseHandle(hProc);
system("pause");
return 0;
}