본문 바로가기

etc/Tip

[Microsoft Spy++]윈도우 프로그램 자동화(Spy++ 용도 및 사용방법)

반응형

안녕하세요. 이번 포스팅은 Microsoft에서 제공하는 Spy++의 용도와 사용방법을 소개하는 포스팅을 해보겠습니다.

 


 Spy++ 용도

Sky++은 윈도우 상에서 처리되는 메시지를 후킹(?)할 수 있도록 도와주는 툴입니다.

 

특정 프로그램으로 전달되는 윈도우 메시지를 확인하고 패턴을 분석해서 소스코드를 변경하지 않고 소프트웨어를 자동화할 수 있습니다.

 

Micro soft 공식 사이트에서 설명은 있습니다.(보기는 어렵네요)

https://learn.microsoft.com/ko-kr/visualstudio/debugger/how-to-start-spy-increment?view=vs-2022

 


Spy++ 실행방법

예전 Visual Studio를 설치하면 Spy++ 이라는 실행파일이 시작메뉴에 있지만

 

최신 버전에는 위치가 바뀌어있네요..

 

※여기서 실행하면 32bit가 실행됩니다. 하지만 64비트 프로그램을 추적하려면 Tool을 찾아 실행해 주세요
64bit SPY++ 경로(VS 2022기준) :
C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools

 


 

Spy++ 사용방법

 

 

Spy++을 실행시켜보면 위와같은 UI가 나타납니다.

 

저희는 메시지를 파싱하기위해 붉은 네모박스 아이콘을 선택해줍니다.

 

추적 아이콘을 끌어서 원하는 프로그램의 창을 선택해주세요.

선택이 완료되면 창핸들, 텍스트 타이틀명 등이 표시됩니다.

 

메시지 탭으로 들어가서 마우스를 선택하고 확인을 클릭합니다.

 

그리고 아까 추적을 완료한 프로그램(메모장)에서 마우스를 클릭하면 SPY++에서 파싱된 메시지가 표시됩니다.

 

 

로그에서 [마우스 우측 클릭 후]→[속성]을 선택하면 메시지 전송 시 필요한 파라미터 정보가 표시됩니다.

 


※참고

 

SPY++을 사용하시는 분들은 주로 자동화 로직을 개발 중일 텐데, 이런 경우 윈도우 메시지의 SendMessage, PostMessage를 사용하게됩니다.

 

        [DllImport("user32.dll")]
        public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParm, IntPtr lParam);

        [DllImport("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParm, IntPtr lParam);

 

C#기준에서는 위와 같을 것으로 보입니다.

hWnd는 윈도우 핸들

Msg는 메시지 번호

wParm, lParam는 파라미터

 

 

C#을 기준으로 예시로 표시한다면 이렇게 볼수 있습니다.

PostMessage(new IntPtr(Convert.ToInt64("0000000000010010", 16)), 
			0x0202, 
			new IntPtr(Convert.ToInt64("00000000", 16)), 
           		new IntPtr(Convert.ToInt64("01B1048D", 16))
            );

 

데이터 확인은아래 그림을 참고하세요.

HWND 윈도우 핸들
파란박스 : Msg메시지, 붉은 박스 : wParm, lParm

 

반응형