Q7. 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 '어떤것'으로 변경되는가


문제에서는 C드라이브의 이름이 CodeEngn일 경우라고 했으므로, VMware를 설치해서 C드라이브의 이름을 CodeEngn으로 변경해주는 작업을 시도했다.

VMware에 07.exe, ollyDbg를 설치한 후 로드해서 F8로 내려가다 보면
4010ED에서 Serial값 입력받는 메세지 다음 4010F2주소의 String1 = "L2C-5781EqfgEngn4562-ABEX" 라는 Serial 값으로 보이는 값 하나를 찾아볼 수 있었다.

해당 문구는 Serial 값이 맞다. 하지만 어떤식으로 C드라이브의 이름이 CodeEngn일 때, Serial 값이 생성되는 방식인지 궁금했다.

다시 Host로 돌아와서 OllyDbg로 07.exe를 로드해 분석을 진행했다.
4010AF부터 4010CD구간에서 값 변화가 일어나는데,
40225C, 40225D, 40225E, 40225F 주소의 값에 1씩 더해주는 구조를 살펴볼 수 있다.
4010CB에서는 DL을 1을 빼준다.
4010CD에서는 DL값이 0이 아니면 4010AF로 점프해서 이 구조를 반복하게 된다.
[그림 5]에서 시작인 4010AD에서 DL값을 2로 설정했으므로, 총 2번에 걸쳐 반복을 수행한다.
이 알고리즘에 의해 영향을 받는 것은
40225C에 저장되어 있고, 4010DE에 있는 "~-ABEX"인 값이다.

그렇게 생성된 "L2C-5781"문구와 알고리즘에 의해 변경된 40225C주소의 "~-ABEX"문구가 합쳐져 하나의 Serial 값을 생성하는 프로그램임을 파악하고 마쳤다.
'Reversing > CodeEngn' 카테고리의 다른 글
| [CodeEngn] RCE basic L09 풀이 (2) | 2025.09.01 |
|---|---|
| [CodeEngn] RCE basic L08 풀이 (0) | 2025.09.01 |
| [CodeEngn] RCE basic L06 풀이 (3) | 2025.09.01 |
| [CodeEngn] RCE basic L05 풀이 (3) | 2025.08.31 |
| [CodeEngn] RCE basic L04 풀이 (0) | 2025.08.31 |