| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 코드엔진
- 리치헤더
- 실행파일
- Reversing
- 리버싱
- 함수 호출 규약
- __stdcall
- Image dos header
- Calling Convention
- __vectorcall
- __fastcall
- RVA
- x32
- __cdecl
- Rich Header
- stack frame
- Dos Stub
- image section header
- Python
- rev
- 32bit
- ABI
- pe format
- Programmers
- 크랙미
- crackme
- 프로그래머스
- CodeEngn
- 파이썬
- x64
- Today
- Total
kj0on
[RCE] Basic L05 본문
0. 실행환경
0-1. 운영체제 (1)

0-2. 툴 (3)



1. 파일

password : codeengn

2. 프로그램 동작

프로그램 실행 시 위의 GUI가 나타난다.

Register now ! 버튼 클릭시 "Wrong Serial,try again!" 메시지를 출력한다.

Name 값을 입력하지 않았을 때는 "Enter a Name!" 메시지를 출력한다.

Serial 값을 입력하지 않았을 때는 "Enter a Serial!" 메시지를 출력한다.

Quit the Crackme 버튼 클릭시 "Mail Name/Serial to acidbytes@gmx.net" 메시지를 출력하고 종료된다.
3. Detect It Easy

32비트 실행파일, UPX 패킹 된 것을 확인할 수 있다.

언패킹 후 실행결과 델파이로 작성된 프로그램인 것을 확인했다.
4. 분석

upx 언패킹 후 분석을 진행했다.

EntryPoint로 이동 후 분석을 진행한다.

EntryPoint에서 문자열 참조 시 [이미지2]에 나타나는 문자열을 확인할 수 있다.

위치로 이동 후 전체적인 동작을 파악한다.

전체 흐름을 보면 위와 같다. 여러 조건에 의해 출력 메시지가 다르게 나타난다.

좀 더 쉽게 전체 흐름을 표현해 보면 위와 같다.

Name과 Serial에 입력값이 있는지를 우선 판별한다.

Name의 입력값이 "Registered User"인지를 판별한다. 해당 값은 하드코딩 된 값이다.

Serial의 입력값이 "GFX-754-IER-954"인지를 판별한다. 해당 값은 하드코딩 된 값이다.

분기 수정 또는 Name, Serial 입력값을 줘서 성공메시지를 출력하도록 한다.

결과 성공메시지가 잘 출력된다.
5. 풀이

문제에서 등록키를 묻고 있기 때문에 정답은 Serial에 해당하는 값인 "GFX-754-IER-954"이다.
'Reversing > CodeEngn' 카테고리의 다른 글
| [RCE] Basic L07 (0) | 2025.07.11 |
|---|---|
| [RCE] Basic L06 (0) | 2025.06.29 |
| [RCE] Basic L04 (0) | 2025.06.29 |
| [RCE] Basic L03 (0) | 2025.06.28 |
| [RCE] Basic L02 (0) | 2025.06.28 |