별다른 설명은 없고 누르면 바로 다운로드 받아진다
0. 실행시키고 확장자명 알아보기

확장자명은 일단 exe인 것 같다.


실행시키면 다음과 같이 무엇을 입력하는 창이 나오고 아무 숫자나 쳐보면 틀린 패스워드라는 대화창이 나온다.
1. 메인 찾기
일단 메인을 찾아보고 내부를 살펴본다. (F7)


함수 내부 모습은 다음과 같다.
DialogBoxParamA 함수가 포함되어 있는 것 같다.
https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-dialogboxparama
DialogBoxParamA 함수(winuser.h) - Win32 apps
대화 상자 템플릿 리소스에서 모달 대화 상자를 만듭니다. (ANSI)
learn.microsoft.com

설명
DialogBoxParam 함수는 CreateWindowEx 함수를 사용하여 대화 상자를 만듭니다. 그런 다음 DialogBoxParam 은 WM_INITDIALOG 메시지(템플릿이 DS_SETFONT 또는 DS_SHELLFONT 스타일을 지정하는 경우 WM_SETFONT 메시지)를 대화 상자 프로시저로 보냅니다. 함수는 템플릿이 WS_VISIBLE 스타일을 지정하는지 여부에 관계없이 대화 상자를 표시하고, 소유자 창을 사용하지 않도록 설정하고, 대화 상자에 대한 메시지를 검색하고 디스패치하는 자체 메시지 루프를 시작합니다.
대화 상자 프로시저가 EndDialog 함수를 호출하면 DialogBoxParam은 대화 상자를 삭제하고, 메시지 루프를 종료하고, 소유자 창을 사용하도록 설정하고(이전에 사용하도록 설정한 경우) EndDialog를 호출할 때 대화 상자 프로시저에서 지정한 nResult 매개 변수를 반환합니다.

아래 내용은 이런데 나중에 더 알아보도록 하자.
2. DialogBoxParamA 함수 내부에 들어가보기


안에는 별 내용 없는 것 같다.
3. 문자열 검색하기

Congratulation !! 문자열이 있는 주변으로 가보자.

메세지 박스 함수가 있는 것을 확인할 수 있다.
아까 봤던 에러창도 있고, 성공처럼 보이는 창이 있는거 보니 이 부분이 중요한 것 같다.

조금 위에다 브레이크포인트(F2)를 걸고 여기까지 와보도록하자. (F9)
하지만 브레이크포인트를 걸어도 이미 실행이 다 된 후이기 때문에 제대로 이 부분까지 올 수 없다.

일단 JMP해서 리턴 코드를 없애고 시도해봤는데 불가능했다.

00401135에서 에러 메세지 박스가 뜨는 곳으로 넘어가는걸 보니 여기로 오기만하면 어느정도 풀 수 있을 것 같다.
Argument가 있어야 실행되는거일수도 있으니 Argument를 넣어보자
인자는 아닌 것 같고, 함수 시작하는 부분에 브레이크포인트를 걸었더니 올 수 있었다.
실행창이 뜬 뒤 대충 1234를 입력해주었다.


이후 함수를 내려가면서 천천히 살펴보았다.


이 함수가 실행되니
스택에 내가 적은 값이 들어가졌다.

여기가 분기점 같다.

1234를 적은채로 실행시키니 Incorrect Password 부분으로 JMP 하는 것을 알 수 있었다.
다시 올라가서 ESP+5에 저장되는 값이 무엇인지 알아보자.
CMP 문을 실행할때의 ESP 값은 19F774이고 여기에 +5를 하면


19F779이다.

내가 작성한 값이 19F778부터 들어간다는걸 알 수 있다.
아까 0x61과 비교하고 있었으므로 a를 넣어보자.
'Reverse Engineering > reversing.kr' 카테고리의 다른 글
| Easy Crack 뒷부분 (0) | 2025.03.27 |
|---|