'전체 글'에 해당되는 글 561건

  1. 2025.07.01 x64dbg Message Breakpoint 메세지 브레이크 포인트
반응형

Message Breakpoint를 사용해 보자.

 

ReverseMe.zip
1.31MB

실습 파일

 

실습 파일(Tut.ReverseMe1.exe)을 로드하고 Run(F9) 한다.

 

Nag Screen이 표시된다. '확인'을 클릭한다.

 

메인 화면이 표시된다. 'Nag?' 버튼을 클릭한다.

 

Nag Screen이 다시 표시된다. 아무것도 클릭하지 말고 x64dbg로 돌아간다.

 

Handles 탭에서 Refresh 한다.

 

'확인' 핸들에서 우클릭 - Message Breakpoint 를 선택한다.

 

 

Messages에 WM_LBUTTONUP을 입력하고 Break on current window only를 선택하고 OK를 클릭한다.

 

브레이크 포인트가 세팅된다. Nag Screen 으로 돌아가 '확인'을 클릭한다.

 

세팅된 브레이크 포인트에서 멈춘다. user32.dll 내부다.

참고로 여기서 스택창에  표시된 [esp+4] 000A0B4C는 '확인' 버튼의 핸들이고 [esp+8] 00000202WM_LBUTTONUP(0x0202)이다.

 

Memory Map 탭 - tut.reverseme1.exe - ".text" 에서 우클릭 - Memory Breakpoint - Execute - Singleshoot 클릭. 그리고 다시 Run(F9) 한다.

프로그램(tut.reverseme1.exe) 내부에서  Nag Screen을 호출한 명령의 바로 다음 명령을 찾기 위한 과정이다. 

(이렇게 하지 않고 Run to user code(Alt+F9)를 실행해도 되지만 이 프로그램의 경우 tut.reverseme1.exe 내부에서 멈추지 않고 msvbvm50.dll 내부에서 멈춘다)

 

 

다시 실행 중 처음 tut.reverseme1.exe - ".text" 영역 명령이 실행되는 지점에서 멈춘다.

 

위로 약간 스크롤 해 보면 멈춘 지점 바로 위 명령이 call <JMP.&rtcMsgBox> 인것을 확인 할 수 있다.

 

좀 더 위로 스크롤 해 보면 Nag Screen을 실행하는 함수의 전체적인 내용을 볼 수 있다.

 

※ 참고

Messages Breakpoints in x64dbg

 

 

이번엔 Run to user code(Alt+F9)를 사용할 수 있는 예를 보자.

 

abexcm5.zip
0.01MB

실습 파일

 

실습 파일(abexcm5.exe)을 로드하고 Run 한다.

 

Check 버튼을 클린한다.

 

Error! 메시지 박스가 나타난다. 아무것도 클릭하지 말고 x64dbg로 돌아간다.

 

Pause(F12) 한 후, Run to user code(Alt+F9)를 실행한다. 그리고 다시 Error! 메시지 박스로 돌아가 '확인' 버튼을 클릭한다.

 

MessageBox 실행 명령 다음 명령에서 멈춘다.

 

반응형
Posted by J-sean
: