#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

+ Recent posts