CodeEngn basic 16

코드엔진 basic 16번 문제풀이

우선 PEiD로 파일을 열어보면 C++ 언어로 만들어진 파일인 것을 알 수 있다.

basic16

이제 파일이 어떻게 동작하는지를 알아보기 위해 파일을 실행해 보면 name과 시리얼 값을 입력하는 프롬프트 창이 뜨는 것을 볼 수 있다.

basic16-1

이제 올리 디버거로 해당 파일을 연 뒤 All referenced Strings를 이용하여 관련 문자열들을 살펴보면 아래와 같이 프로그램과 매우 관련되어 보이는 문자열들을 찾을 수 있다.

basic16-2

이제 Good Job! 문자열을 클릭하여 이동한 뒤 분석해 보면 역시 입력 값을 비교하여 점프하는 분기문이 있는 것을 찾을 수 있었다.

basic16-3

비교문에 브레이크 포인트를 걸고 실행한 뒤 Follow in Dump를 사용해 LOCAL.15 스택 세그먼트에 들어 있는 값을 찾아보면 E4C60D97 임을 알 수 있고 eax값을 확인해보면 내가 입력한 10진수 시리얼 값이 16진수로 변환되어 저장된 것을 확인할 수 있었다. 그러니 name값 CodeEngn에 대하여 정확한 시리얼 값은 E4C60D97을 10진수로 변환한 3838184855 임을 알 수 있다.

basic16-4