My Study/Program2012.02.13 16:21
Windows 메시지 로깅을 해보자. 간간히 어떠한 작업을 할 때 메시지 로깅이 필요할 때가 있는데 그 때 사용하는 툴 입니다.

이상한 잡다구리한 툴이 아닌 VS를 설치하면 같이 설치되는 툴로서..


Microsoft Spy++

이라는 툴입니다. 파일명은 spyxx.exe군요.

Microsoft에서 제공을 해주는 툴이므로 껄쩍지근함 없이 바로 사용할 수 있었습니다.
타겟 테스트 프로그램은.. PC_CTL.exe로 하겠습니다.

사실 2012년 2월 어느날.. 서울을 갔다가 잘곳이 없어서 찜방에서 자게 되었습니다.
마침 찜질방 컴퓨터가 있길래..  켰습니다. 사용하려 했더니 돈을 넣으라더군요.

전 소프트웨어발전을 위해 착실히 돈을 내고 쓰는 유저이기 때문에 개발자와 찜질방 주인을 위해 돈을 투입했습니다.
그래서.. 관련 exe를 가져왔습니다. 그게 PC_CTL.exe입니다.
부모프로세스로 MSServices.exe라는 프로그램도 있었습니다. :-)

피시방에서 살짝쿵 분석을해서 ... 유용?!하게 사용하긴 했지만 일단 여기선 메시지 로깅이 목적이므로.. ㅎㅎㅎ

먼저 툴을 소개하겠습니다.

먼저 메시지 로깅 툴을 켜보면 이와 같이 나옵니다. 현재 활성화된 모든 윈도우들에 대한 핸들이 나오는군요.

그 외에도 Spy메뉴에서 Processes를 누르면..
 

이와 같이 나오고.... PC_CTL 프로세스도 보이는군요.

+버튼을 눌러 자세히 보면..

또한 원하는 Process, Thread, Windows에 대고 우클릭 후 Message를 누르면 해당 Windows에서 발생하는 모든 메시지를 로깅할 수 있으며..


이와 같이 Message Options을 주어서 원하는 메시지만 로깅할 수 있습니다.

그리고 로깅 후 보고 메시지를 자세히 보고 싶으면 우클릭 후 Properties.. 를 눌러주면..
 

wParam과 lParam에 대한 자세한 정보도 볼 수 있습니다.

뭐 메시지 관련 API함수들을 Hook해서 체크할수도 있지만 툴이 있으므로 이렇게 편하게 확인하면 됩니다. 

그리고 PC_CTL 프로그램은 분석결과

Windows 작업 관리자

레지스트리 편집기
컴퓨터 관리
서비스
시스템 구성 유틸리티

위 5개의 프로그램이 켜질경우 자동으로 해당 프로그램들을 꺼버리는데요.
그냥 전 각 프로세스의 핸들을 얻어서 TerminateProcess함수로 종료시키는줄 알았습니다만..
BP를 걸고 running 해봐도 멈추지 않는걸로 보아 그건 아니더군요. 

그래서 한번 봐보았습니다. 
메시지 로깅을 원하는 윈도우를 설정하고 작업관리자를 켜보았습니다. 당연히 작업관리자는 죽겠지요. 

 

그랬더니 이와 같이 로그가 남았습니다.

그러면 이벤트로 작업관리자를 죽이는것 같네요.

작업 관리자의 이벤트를 로깅해봤습니다. 
 

위에 WM_TIMER는 1초에 한번씩 발생하는걸로 봐서 프로세스목록을 1초에 한번씩 얻어오고 있나봅니다.
빨간색 네모친것보면 WM_CLOSE이벤트가 발생했군요.
PC_CTL 프로세스가 SendMessage 혹은 PostMessage를 사용해 WM_CLOSE 이벤트로 작업관리자를 죽였나봅니다. 


정답!

아무튼 이외에도 기능이 많으니 한번만 써보셔도 괜찮은 툴이라는 것을 알 수 있을 것 입니다. 더 괜찮은 메시지 로깅 툴이 있다면 추천 바랍니다 ^^; 

'My Study > Program' 카테고리의 다른 글

Windows8-ConsumerPreview-32bit-English  (0) 2012.03.03
GOMENCODER(곰인코더) Crack - 2012/02/28  (4) 2012.03.01
Windows Message Logging Tool  (0) 2012.02.13
.text section disasm  (0) 2011.07.26
ASCII Generator  (2) 2011.04.19
Ezbeat Keygen Template  (3) 2010.12.09
Posted by Ezbeat