GetModuleFileName 함수는 현재 실행되고 있는 프로세스의 이름을 얻어오는 함수이다. 


MSDN에 정의된 GetModuleFileName API


DWORD WINAPI GetModuleFileName(
  _In_opt_  HMODULE hModule,
  _Out_     LPTSTR lpFilename,
  _In_      DWORD nSize
);


첫 번째 인자는 이름을 얻어올 프로세스의 핸들이지만, 보통 자신의 이름을 얻기 위해 사용되므로 

NULL로 사용되는 경우가 대부분이다.  첫 번째 인자에 NULL을 넣어 사용하면 현재 자신의 이름을 얻어오고

그 외 다른 프로세스의 핸들을 전달하거나 DLL파일의 핸들을 전달하면 해당 모듈의 파일 이름을 얻어온다. 


두 번째 인자는 해당 모듈의 이름이 입력될 버퍼를 넣어주면 되고 


세 번째 인자는 버퍼의 사이즈를 넣어주면 된다. (이런 사이즈인수는 대부분 버퍼오버플로우 공격을 하지 못하도록 하기 위함이라고 보면 된다. 그외 오버 플로우로 인한 버그의 소지도 예방할 수 있음.)

Posted by $Zero
: