파일 모니터는 윈도우 상에서 (링 레벨 1 이상, 이것은 VxD (링 레벨0)는 후킹하지 못한다는 것을 뜻한다.) 일어나는 파일에 대한 읽기, 쓰기에 대한 모든 작업을 가로채어 보여주는 작업을 한다.
모든 프로그램에 파일 입출력을 하고 있는데, 우리는 그러한 것 전부를 캡처 할수 있다. 윈도우의 스왑파일을 쓰는 것이나, 심지어 메모장에서 어떤 글꼴을 몇번 읽었는 지도 알수 있다.
우리가 FileMon 을 통해서 알수 있는 것은 다음과 같다.
1. 파일입출력을 사용하는 프로그램 이름
2. 파일입출력를 사용 하는 방식(읽기/쓰기)
3. 사용하는 파일입출력의 경로
4. 파일입출력의 결과
5. 파일입출력 오프셋 길이, 그리고 기타 사항 (몇가지 유용한 정보가 될수 있다.)
먼저 기본적인 메뉴 설명을 한다.
[File] 메뉴.
레지스트리 모니터에 나타난 내용을 저장하는 기능을 가지고 있다.
[Edit] 메뉴
History Depth 는 파일입출력에 대한 작업을 얼마나 한번에 나타낼 것인가를 설정한다. 즉 파일입출력의 깊이(초기값 0 : 0은 제한을 두지 않는 것이다)를 10으로 실행하고, 파일입출력 모니터링을 하여 파일입출력에 대한 작업이 30개 나타났다면 FileMon은 최근 10개 이후의 값은 보여주지 않고 최근 10개까지만 보여주는 것이다.
익스플로러 점프 : 이것은 사용한 파일입출력으로 이동한다. 몇단계에 걸쳐 눈앞에 보이는 경로를 하나하나 클릭하면서 힘들게 직접 따라가지않아도 익스플로러를 통해서 바로 갈수 있게 해준다. (더블 클릭과 같은 역할을 한다.)
다음에는 제일 중요한 필터링에 대해서 알아본다.
필터링이 중요한 이유는 파일입출력에 대한 행동은 모든 어플리케이션에서 빈번하게 일어나기 때문에 자칫 우리가 원하는 정보를 지나치기 쉽다. 그래서 여러 가지 조건을 두어 원하는 파일입출력의 행동 정보만을 가로채 볼수 있는데, 조건값과 기능은 다음과 같다.
Include : 특정 문자열을 포함한 것을 말하는데, 밑에 보면 Read/Write 두가지 행동에 대한 필터링 설정도 가능하다. 즉 필요한 행동에 대해서 필터링이 가능하다는 것이다.
Include에, 만약 ACD*를 포함시키면 (*는 어떠한 문자든지 가능하다는 표현인 와일드 카드이다) ACDSEE 그림뷰어에 대한 파일입출력 가로채기를 한다는 의미이다.
Exclude: 특정문자열을 포함한 것은 파일입출력 모니터창에 나타내지 않는다는 뜻이다. 만약 hwp*라고 하면 한글 97이 파일 입출력을 건드리는 작업에 대해서는 화면에 일절 표시하지않는다는 것이다.
Highlight은 이것을 포함한 문자열은 하이라이팅(이것도 설정 메뉴에 있다. 기본은 빨간 바탕에 흰색 글자)해주는 역할을 한다.
파일 모니터는 실행하자 마자 엄첨난 정보가 쏟어져 나온다. 익스플로러(탐색기)로 경로를 이동하면 이동 경로와 나타낸 파일 전부를 볼수 있으며, 스왑파일이 어디에 얼마만큼 쓰는지도 알수 있다.
그리고 노트패드를 실행했을때 사용하는 글꼴에 대한 캐쉬작업도 역시 엿볼수 있다.
엄청나지 않은가?
사실 이 파일 모니터는 RegMon과 VxDMon과 더불어 많이 사용하는 유틸리티이다.
사용법을 숙지해서 이용한다면, 프로그래밍 할때 SPY++만큼 유용한 정보가 될것이다.
그리고 이 파일 모니터 역시 소스가 공개되어 있으므로 원리를 알고자 하는 분들은
다운로드받아서 살펴볼 수도 있다.