레지스트리 모니터라는 것은 이름 그대로, 레지스트리에 관해 움직이는 숨겨진 동작을 가로채는 도구이다. 여기서는 풀 소스가 공개되어 있고, 게다가 수많은 사이트에서 다운 받을수 있는 RegMon에 대해서 알아 보겠다.
어줍잖은 실력으로 과연 이 유틸의 구현이 어떤지 추측해 보자면, 윈도 운영체제는 각각의 어플리케이션들끼리나, 또는 윈도 자신과 어플리케이션사이에 모든 통신을 메시지로 처리한다. 메시지중에는 윈도를 움직이거나, 화면을 그리는것등이외에 레지스트리에 정보를 기록하고 특정한 값을 얻어오는 메시지도 있다.
RegMon은 시스템 차원에서 메시지들을 지켜보고 있다가 윈도 어플리케이션이 레지스트리 API를 사용하게 되면 (물론 정해진 몇 개가 필터링된다) 이것들을 가로채서 표시하고 다시 원래의 갈길로 돌려주는 일종의 인터럽트 기능이다. 물론 소스를 분석해 보면 명확히 알게 될 것이다.
우리가 RegMon을 통해서 알수 있는 것은 다음과 같다.
1. 레지스트리를 사용하는 프로그램 이름
2. 레지스트리를 사용 하는 방식
3. 사용하는 레지스트리값의 경로
4. 레지스트리API의 결과
5. 레지스트리 값과 기타 사항 (몇가지 유용한 정보가 될수 있다.)
먼저 기본적인 메뉴 설명을 한다.
[File] 메뉴.
레지스트리 모니터에 나타난 내용을 저장하는 기능을 가지고 있다.
[Edit] 메뉴
History Depth 는 레지스트리에 대한 작업을 얼마나 한번에 나타낼 것인가를 설정한다. 즉 레지스트리의 깊이(초기값 0 : 0은 제한을 두지 않는 것이다)를 10으로 실행하고, 레지스트리 모니터링을 하여 레지스트리에 대한 작업이 30개 나타났다면 RegMon은 최근 10개 이후의 값은 보여주지 않고 최근 10개까지만 보여주는 것이다.
레지스트리 점프 : 이것은 특정위치의 레지스트리로 점프한다. 몇단계에 걸쳐 눈앞에 보이는 경로를 하나하나 클릭하면서 힘들게 직접 따라가지않아도 미리 윈도 운영체제에서 제공하는 유틸리티인 Regedit.exe을 통해서 보여준다. (더블 클릭과 같은 역할을 한다.)
다음에는 제일 중요한 필터링에 대해서 알아본다.
필터링이 중요한 이유는 레지스트리에 대한 입출력은 모든 어플리케이션에서 빈번하게 일어나기 때문에 자칫 우리가 원하는 정보를 지나치기 쉽다. 그래서 여러 가지 조건을 두어 원하는 레지스트리의 입출력 정보만을 가로채 볼수 있는데, 조건값과 기능은 다음과 같다.
Include : 특정 문자열을 포함한 것을 말하는데, 밑에 보면 Log Error와 같이 또 다시 조건이 붙고 있다. 즉 필요한 행동(레지스트리를 읽는 행동만 가로채려면 Log Read만 체크하면 된다)에 대해서 필터링이 가능하다는 것이다.
Include에, 만약 ACD*를 포함시키면 (*는 어떠한 문자든지 가능하다는 표현인 와일드 카드이다) ACDSEE 그림뷰어에 대한 레제스트리 가로채기를 한다는 의미이다.
Exclude: 특정문자열을 포함한 것은 레지스트리 모니터창에 나타내지 않는다는 뜻이다. 만약 hwp*라고 하면 한글 97이 레지스트리를 건드리는 작업에 대해서는 화면에 일절 표시하지않는다는 것이다.
Highlight은 이것을 포함한 문자열은 하이라이팅(이것도 설정 메뉴에 있다. 기본은 빨간 바탕에 흰색 글자)해주는 역할을 한다.
그럼 이제 뭔가를 레지스트리 모니터 하면서 사용법을 숙지 해보자.
메모장 - 노트패드도 레지스트리를 이용할까? 안철수박사에 따르면 I-Worm/Qaz 바이러스는 바로 이 메모장으로 위장하는 바이러스이다. 한번 알아보는 것도 나쁘지 않겠다. 우선 RegMon을 띄우고, 필터링 창으로 간다.
우선 다른 것들은 모니터링 할것이 아니기 때문에 Inculde 항목에 Note* 라고 써넣는다.
읽기/쓰기작업등을 전부 모니터링 할것이기에 나머지 체크항목을 전부 체크 한다.
히스토리 깊이는 0으로 맞춰주고나서 노트패드를 실행시켜 보자.
물론 노트패드도 윈도 어플리케이션이기 때문에 당연히 레지스트리를 이용한다. 과연 어떤항목들이 불거져나올것인가?
아직까지 뭔지는 알수 없지만 레지스트리 형태와 무엇을 하는지 알수 있을 것이다. 여기서는 레지스트리의 키값을 여는 명령(OpenKey)과 값을 받아오는 (QueryValue) 명령, 그리고 사용했던 키값을 닫는 명령들이 나타났다.
그리고 값에 대한 결과가 값을 얻어오는데 성공한 경우도 있고, 실패한 경우도 있다. 이 사실은 매우 중요한 뜻을 나타내는데, 다음 강좌에 나올 VideoSoft 크랙강좌에서 핵심적으로 쓰인다.
Notepad에 나타난 내용 중에는 저장할 때 시작하는 위치를 담은 값이 있을 수도 있고, 또 어떠한 IME를 쓰는지도 나타날것이다. 하지만 세부적이며 애플리케이션 특성적인 상황을 알려고 하는 것이 아니기에, 꼭 필요한 부분의 사용법만 숙지하고, 계속될 VideoSoft OCX크랙강좌를 통해서 실전경험을 쌓아보자.