Process Monitor (ProcMon.exe) : 특정 프로그램이 런타임에 호출하는 Windows API 모니터링 하기

주싱·2021년 5월 10일
3

Trouble Shooting

목록 보기
8/21
post-custom-banner

개요

Process Monitor 는 윈도우 운영체제에서 실행중인 프로세스들이 런타임에 호출하는 API(파일, 레지스트리, 쓰레드 등)를 실시간으로 모니터링할 수 있는 도구이다.

일전에 C++로 작성된 서버 프로그램이 간헐적으로 비정상 종료하는 문제를 만났는데, 비정상 종료와 함께 파일 쓰기 관련 오류 메시지를 출력하고 있었다. 그 때 파일 API 호출에 오류가 있는 코드를 찾으려 이 프로그램을 처음 사용해 보게 되었고, 그 뒤로 친해진 것 같다.

그때의 기억, GitHub

아래 공식 사이트에서 프로그램에 대한 설명과 최신 프로그램을 무료로 다운로드 받을 수 있다. 이 글에서는 Process Monitor 프로그램을 의미있게 사용하는 Quick 가이드를 정리하려고 한다.

Process Monitor v3.70

프로그램 설치 및 실행하기

  • 프로그램을 다운받고 압축해제한다.

  • 실행파일 (Procmon.exe)을 실행한다.

  • 라이선스 동의한다.

  • 프로그램이 실행되고 전체 프로세스의 Windows API 호출 로그가 실시간으로 출력되는 것을 확인할 수 있다.

  • 툴바에서 제공하는 주요 기능은 아래와 같다.

특정 프로그램의 로그 필터링하기

이제 우리가 관심있는 특정 프로그램(프로세스)의 API 호출만 모니터링해보자.

  • 필터링 메뉴를 클릭한다.

  • 디폴트 필터를 모두 삭제한다.

  • 모니터링하고자 하는 프로세스의 이름을 입력한다. 예시로 chrome.exe 프로세스를 모니터링 해보자.

  • [Process Name] 선택 / [is] 선택 / [chrome.exe] 선택/ [Include] 선택 → Add 버튼 선택 → OK 버튼

  • chrome.exe 프로세스 Windows API 호출 로그만 필터링되는 것을 확인할 수 있다.

특정 API 로그 필터링하기

이제 특정 프로세스의 특정 API 호출만을 모니터링해보자.

  • 동일하게 필터링 창을 열고, 파일 관련 API 필터를 추가해 준다.

  • [Operation] 선택 / [is] 선택 / [CreateFile] 선택 / [Include] 선택 → Add 버튼 선택 → OK 버튼

  • [CloseFile], [WriteFile], [ReadFile] 에 대해서도 위와 같이 추가해 준다.

  • 이제 chrome.exe 프로세스의 File 관련된 API 호출 로그만 필터링되는 것을 확인할 수 있다.

  • 조금 공부해 보면 다른 API 들도 다양하게 활용할 수 있다.

로그 내보내기

  • 추가적으로 관심있는 로그들을 수집한 후 외부로 내보내기 하여 Customized 된 세부적인 분석을 수행할 수 있다.

  • Save 버튼을 클릭한다.

  • 필터링이 적용된 로그를 CSV 파일 형태로 내보내 보자.

  • CSV 파일로 로그가 저장된 것을 확인할 수 있다.

  • CSV 파일을 분석하는 간단한 프로그램을 작성하면 조금더 고도화된 분석을 수행할 수 있다.

  • 나는 Process Monitor 로그를 분석해서 아래의 케이스가 발생하는지 찾는 간단한 프로그램을 작성한 경험이 있다.

[부록] Process Monitor와 카카오톡 PC 버전과 충돌

  • Process Monitor 를 실행하면 카카오톡 PC 버전과 충돌이 발생한다. 아래와 같은 메시지가 뜨면서 실행이 되지 않는다.

  • 아래 두개의 레지스트리 키를 삭제해 주고, 컴퓨터를 재부팅하면 다시 카카오톡 프로그램 사용이 가능하다.

    컴퓨터\HKEY_CURRENT_USER\SOFTWARE\Sysinternals\Process Monitor
    컴퓨터\HKEY_CLASSES_ROOT\ProcMon.Logfile.1

  • 카카오에서 자사 프로그램 해킹을 막기위해 막아둔 것으로 보인다.

profile
소프트웨어 엔지니어, 일상
post-custom-banner

0개의 댓글