본문 바로가기

My Study/Function

CreateRemoteThread

HANDLE CreateRemoteThread(
     HANDLE hProcess,      
     LPSECURITY_ATTRIBUTES lpThreadAttributes,  
     DWORD dwStackSize,   
     LPTHREAD_START_ROUTINE lpStartAddress, 
     LPVOID lpParameter,    
     DWORD dwCreationFlags,
     LPDWORD lpThreadId     
);

CreateThread함수와 작동하는 방법은 같다. 하지만
특정 프로세스의 주소 영역내에 있는 스레드를 생성시킬수 있는 함수이다.
첫번째 인자로 hProcess를 전달하는 것을 보면 알수있다.
하지만 해당 메모리 주소가 READ/WRITE가 가능한 영역이어야 한다.


hProcess : 대상 핸들
lpThreadAttributes : 핸들 상속 여부
dwStackSize : 할당할 스택 크기, 0을 주면 기본할당(1MB) (너무 작은 사이즈 요구시 그냥 1MB로 해버림)
lpStartAddress : 생성시킬 스레드의 시작 주소
lpParameter : 스레드에 넘겨질 인자
dwCreationFlags : 스레드의 생성 및 실행을 조절하기 위해 사용되는 전달인자
                            0 -> 생성과 동시에 실행상태
                            CREATE_SUSPENDED -> 생성과 동시에 Blocked상태 ( ResumThread가 호출되면 실행을 시작 )
lpThreadId : 스레드 ID를 전달받기 위한 변수의 주소값 전달. 굳이 필요 없다면 NULL


'My Study > Function' 카테고리의 다른 글

WaitForDebugEvent  (0) 2010.04.12
DebugActiveProcess  (0) 2010.04.12
VirtualAllocEx  (0) 2010.04.12
timeSetEvent  (0) 2010.03.10
FindNextFile  (2) 2010.02.25