#About
Author : uBc - bRiANbuSY
Korean :
Name이 CodeEngn 일때 Serial을 구하시오
English :
Find the Serial when the Name is CodeEngn
#Contents
Name 값에 따라 달라지는 Serial 키 값을 찾는 것을 목표로 한다
#Solution
[그림 1] - 실행화면
15.exe를 실행했을 때 UI이며 네임 값에 코드엔진과 시리얼 값에 임의의 값을 적어 주었을 때 아래와 같은 에러 메시지를 확인할 수 있다
[그림 2] - 에러 메시지
출력된 메시지를 통해 시리얼 값은 정수형으로 입력해주어야 한다는 사실을 알 수 있었다
[그림 3] - Delphi Programming
패킹여부의 확인을 위해 PEiD로 보았더니 패킹은 되어있지 않았고, 델파이로 제작된 것을 확인할 수 있었다
디버거로 열어 준 뒤, 해당 프로그램에서 사용 된 문자열을 추출했더니 아래와 같이 프로그램의
시리얼 값의 인증과 관련있어 보이는 아스키 값을 확인할 수 있었다
[그림 4] - 문자열 추출
해당 주소로 이동했더니 역시나, 해당 주소로 이동하는 분기문을 확인할 수 있었다
[그림 5] - 분기문 JNZ
분기문을 살펴보니 ZeroFlag가 0되어야 하는 즉, 00458831에서 EAX 값과 45B844에 담긴 값이 같다면 크랙 성공 문구를 출력시키는 코드임을 알 수 있었다
이번 문제의 핵심이 되는 코드주소인 00458831에 있는 EAX 값과 45B844에 담긴 값을 찾기 위해 bp를 00458837에 걸고 아래와 같이 값을 입력해주었다
[그림 6] - 값 입력
위와 같이 값을 입력해 주었더니 아래와 같이 레지스터 EAX 값에 담기는 것을 확인할 수 있었다
[그림 7] - EAX
위와 같이 EAX 레지스터에 사용자가 입력한 값이 담기는 것을 확인 후, 00458831에서 참조하는 주소 45B844에 있는
4바이트 값을 확인하기 위해 단축키 Ctrl + G를 통해 이동해 주었더니 아래와 같이 확인할 수 있었다
[그림 8] - 4바이트 값
리틀엔디언으로 읽어야 하므로 해당 값은 0x00006160이며 10진수로 표기하면 24928이다
따라서 사용자 입력 값과 비교하는 값은 24928이며, 입력 값과 일치하다면 크랙에 성공했다는 메시지를 출력하는 코드로
이동하기에 [그림 6]에서 넣어 주었던 시리얼 값 256이 아닌, 24928을 넣고 체크하게 되면, 아래와 같이 문제 해결 완료
[그림 9] - 올바른 시리얼 값 입력
[그림 10] - 크랙
'Wargame' 카테고리의 다른 글
CodeEngn Basic 17 (0) | 2017.10.17 |
---|---|
CodeEngn Basic 16 (0) | 2017.10.13 |
CodeEngn Basic 14 (0) | 2017.10.11 |
CodeEngn Basic 13 (0) | 2017.10.11 |
CodeEngn Basic 12 (0) | 2017.10.08 |