CreateRemoteThread
Last updated
#include <windows.h>
#include <iostream>
using namespace std;
HANDLE createRemoteThread(HANDLE hProc, LPVOID execAddr) {
HANDLE hThread = CreateRemoteThread(
hProc, NULL, 0,
(LPTHREAD_START_ROUTINE)execAddr,
NULL, 0, NULL
);
if (!hThread) {
wcout << L"Failed to create thread" << endl;
}
return hThread;
}
int main() {
DWORD pid = 1234;
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (hProc) {
// 메모리 할당 및 셸코드 쓰기
LPVOID exec = VirtualAllocEx(hProc, NULL, 4096,
MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (exec) {
// 셸코드 쓰기 생략
// 원격 프로세스 쓰레드 핸들 생성
HANDLE hThread = createRemoteThread(hProc, exec);
if (hThread) {
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
VirtualFreeEx(hProc, exec, 0, MEM_RELEASE);
}
CloseHandle(hProc);
}
return 0;
}