Codeengn Basic RCE 5
Q. 이 프로그램의 등록키는 무엇인가
이번 주차의 예제 문제를 풀기 위해서는,
1) Detect it easy (DIE)
2) UPX 언패킹
3) VMUnpacker
--> 먼저 3개의 디버깅 툴을 설치하는 과정이 필요하다.

DIE에 다운로드한 5.exe 파일을 넣어보면, 사진과 같이 나타남을 알 수 있다.
우리는 DIE를 통해서, 1) 실행되는 운영 체제와 2) 패킹 여부와 패킹 프로그램에 대해 확인할 수 있는 것이다.
사진과 같이 패커: UPX로 되어 있다면 --> UPX로 패킹이 되어 있구나 생각하면 된다.
** 만일 패킹이 되어 있다면, 패킹 파일을 Immunity Debugger에서 바로 열면 실행이 되지 않고, 언패킹 과정을 거친 후에
Immunity Debugger 에서 파일을 열어야 정상 실행이 가능하다.
** 언패킹 방법
아까 다운로드한 upx-4.2.4-win64 폴더에 압축을 풀 exe를 넣고, cmd를 켜서 명령어를 입력한다.
(upx –d –o [저장할 파일명] [원본 파일명])
여기에서 –d는 upx로 압축된 파일 해제 명령이고, -o는 압축 해제 후 생성될 파일 명을 설정하는 명령어이다.

해당 과정을 거친 이후에, 정상적으로 언패킹이 성공한 것을 확인할 수 있다.
이제 Immunity Debugger에서 파일을 열어 실행해 보자.

Immunity Debugger 에서 파일을 열고 F8키를 눌러 실행하다 보면, 위처럼 해당 화면이 나타난다.
여기에서 대략적으로 user name과 serial number 값의 입력이 필요하구나 ~ 정도를 예측해 볼 수 있다.

이후에 우클릭 > Search for > All referenced strings를 열어보면,
누가봐도 user name과 serial number와 같이 보이는 수상한 값이 나타남을 알 수 있다.

그래서 user name와 serial number 부분에 입력해 보면, 이전에는 Wrong ~ , 이라고 나타났는데, 지금은 Successfully의 화면이 나타남을 알 수 있다. 일단 문제의 정답 찾기에는 성공한 것이다.
그렇지만, 코드에 대해 조금 더 알아보고자 한다.
두가지 입력값을 모두
넣었다면, No name entered, No serial entered 코드를 건너뛰어서 올바른 값인지 / 틀린 값인지 비교하게 된다.

- Zero Flag (ZF): ZF 는 CPU 플래그 레지스터의 한 비트로, 연산 결과가 0인지 여부를 기록함.
- 연산 결과 = 0 → ZF = 1
- 연산 결과 ≠ 0 → ZF = 0
- JNZ (Jump if Not Zero)
- 조건 분기 명령어
- 의미: “ZF=0 이면 점프해라”
- 즉, 두 값이 다를 때 점프
- 반대로 값이 같아 ZF=1이면 점프하지 않고, 다음 명령으로 그냥 진행합니다.
(1) 첫 번째 JNZ (00440F39)
- CMP [UserInput], "Registered User" → 유저명 비교
- 다르면 → ZF=0 → JNZ 00440F8C로 분기 (wrong 창 함수로 실행)
- 같으면 → ZF=1 → JNZ 점프 안 함(조건 불충족) → 다음 명령으로 진행
(2) 두 번째 JNZ (00440F56)
- CMP [SerialInput], "GFX-754-IER-954" → 시리얼키 비교
- 다르면 → ZF=0 → JNZ 00440F72로 분기 (wrong 창 함수로 실행)
- 같으면 → ZF=1 → JNZ 점프 안 함(조건 불충족) → 바로 밑의 Congrats 함수 실행
위의 과정들을 통해, 문제에서 요구하는 등록키는 GFX-754-IER-954임을 확인할 수 있다.

문제 해결 완-료
'INTERTLUDE > 리버싱 스터디' 카테고리의 다른 글
| Codeengn Basic RCE 8 (0) | 2025.09.30 |
|---|---|
| Codeengn Basic RCE 6 (0) | 2025.09.30 |
| [리버싱 스터디]_1주차 Codeengn Basic RCE 3 (0) | 2025.09.23 |
| [리버싱 스터디]_1주차 Codeengn Basic RCE 2 (0) | 2025.09.23 |
| [리버싱 스터디]_1주차 Codeengn Basic RCE 1 (0) | 2025.09.23 |