본문 바로가기
Programming/System Programming

[WIN32 / C]프로세스 하위 Thread Entry Point (EP) 코드 출력

by Winduck 2017. 5. 2.
반응형

개인적인 프로젝트를 진행하며 로컬에서 실행되는 모든 프로세스 대상으로 존재하는 Thread들의 EP코드를 찾을 일이 있어 EP코드의 주소를 찾는 부분을 공부하게됬습니다. 

Thread의 EP주소를 찾기 위해서 API중 ZwQueryInformationThread를 이용했습니다. 다음은 ZwQueryInformationThread의 생김새입니다.

NTSTATUS ZwQueryInformationThread(
 _In_      HANDLE          ThreadHandle,
 _In_      THREADINFOCLASS ThreadInformationClass, // 받을 정보의 형태
 _In_      PVOID           ThreadInformation, //정보를 받는 버퍼
 _In_      ULONG           ThreadInformationLength,
 _Out_opt_ PULONG          ReturnLength
);

-ThreadInformationClass : 받을 데이터가 무엇인지 전달한다.

-ThreadInformation : 정보를 받는다. (MS에는 In이라고 되어있는데 실제로 함수호출시 정보를 받아오는 것을 볼수있다.)


다음은 ThreadInformationClass에 전달되는 인수이다.




9번째 파라미터인 ThreadQuerySetWin32StartAddress를 통하여 Thread의 EP의 위치를 찾습니다. 다음은 ZwQueryInformationThread를 이용하여 쓰레드의 EP주소를 찾는 코드입니다.



위코드를 통하여  EP코드주소를 찾을 수 있습니다. 아래결과값은 ThreadEP주소와 EPCode인데 결과 값도 잘나온 것을 볼 수 있습니다.




반응형

댓글