반응형
HANDLE CreateRemoteThread(
HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
CreateRemoteThread 함수는 다른 프로세스의 가상 주소 공간안에서 실행되는 쓰레드를 생성한다.
hProcess
쓰레드를 생성할 프로세스 핸들이다.
이 핸들은 반드시 PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERTATION, PROCESS_VM_WRITE, PROCESS_VM_READ 권한이 있어야한다.
lpThreadAttributes
하위 프로세스가 반환된 핸들을 상속할 수 있는지에 대한 여부를 나타내는 포인터이다.
lpThreadAttrubutes 가 NULL 이면 쓰레드는 핸들을 상속할 수 없다.
dwStackSize
스택의 초기 BYTE 크기이다.
이 값이 0 이면 스레드는 실행파일의 기본크기를 사용하게된다.
lpStartAddress
쓰레드에 의해 실행될 LPTHREAD_START_ROUTIN 타입의 함수에 대한 포인터로
원격 프로세스에서 스레드의 시작주소를 나타낸다. 이 함수는 원격 프로세스에 존재해야 한다.
lpParameter
쓰레드 함수에 전달할 변수에 대한 포인터이다.
dwCreationFlags
쓰레드 생성을 제어하는 플래그이다.
lpThreadId
스레드 식별자를 수신하는 변수에 대한 포인터로 이 값이 NULL 이면 스레드 식별자는 반환되지 않는다.
이 함수가 성공적으로 실행되면 새 쓰레드에 대한 핸들을 반환한다.
함수가 실행에 실패하면 NULL을 반환하며 실패에 대한 자세한 정보는 GetLastError 함수를 통해 알 수 있다.
Example
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, pThreadProc, pRemoteBuf, 0, NULL);
반응형
'프로그래밍 > WinAPI' 카테고리의 다른 글
WaitForSingleObject 함수 (0) | 2020.09.06 |
---|---|
GetProcAddress 함수 (0) | 2020.09.05 |
GetModuleHandleW 함수 (0) | 2020.09.05 |
WriteProcessMemory 함수 (0) | 2020.09.05 |
VirtualAllocEx 함수 (0) | 2020.09.05 |