Q18. Name이 CodeEngn일 때 Serial은 무엇인가

실행해서 보면 Name값과 Serial 값을 받아 체크하는 프로그램이다.
문제에서 주어진 Name : CodeEngn, 임의의 Serial값을 입력하여 다시 시도하라는 메시지를 확인했다.

OllyDbg로 18.exe를 열어보면 압축된 코드라고 한다.

하지만 어떠한 정보도 확인해 볼 수 없었다.

처음 보는 명령어들(MOVQ, PAND, PSRLQ, POR)과 'MMx'이라는 인자값들을 사용한다는 것을 확인했다.
그래도 그동안 해온 분석하는 과정과 다르지 않을 것이라 보고 분석을 더 진행해 보았다.

Text strings referenced에서 Good이라는 성공문구를 확인해 볼 수 있었다.
해당 주소로 바로 이동했다.

40120E에서 성공문구를 출력해 준다.
이 성공문구를 출력해 주는 주소로 오는 주소는 4011F6에서 넘어왔으므로, 해당 주소로 이동해 보았다.

4011F6은 단순히 분기점이었다.
바로 위에서 호출되는 함수를 보면 lstrcmpiA라고 하는 함수가 있는데, 2개의 문자열을 받아 비교하는 함수이다.
여기서 어떠한 String값들이 저장되어 비교되는지 확인해 보기 위해 4011F6에 BP를 걸고 동적분석을 진행했다.

[그림 8]과 같이 테스트 값을 작성 후 디버깅을 진행했다.

BP가 걸린 지점에서 Strings1, Strings2가 저장된 값을 확인해 볼 수 있었다.
String1에는 입력한 12345 값이, String2에는 이 프로그램에 저장된 Serial값(06162370056B6AC0)을 비교하는 것 같다.

정답 : 06162370056B6AC0
'Reversing > CodeEngn' 카테고리의 다른 글
| [CodeEngn] RCE basic L20 풀이 (0) | 2025.09.06 |
|---|---|
| [CodeEngn] RCE basic L19 풀이 (0) | 2025.09.05 |
| [CodeEngn] RCE basic L17 풀이 (0) | 2025.09.04 |
| [CodeEngn] RCE basic L16 풀이 (0) | 2025.09.03 |
| [CodeEngn] RCE basic L15 풀이 (0) | 2025.09.03 |