CodeEngn basic 15

코드엔진 basic 15번 문제풀이

프로그램을 실행해 보면 name과 시리얼 값을 입력하는 창이 나오는데 정확한 키값을 입력하지 않으면 try again이라는 메시지가 나타나는 것을 볼 수 있다.

basic15

PEiD로 검사를 해보니 패킹은 되어있지 않았다. 이제 올리 디버거를 사용하여 프로그램을 연 뒤 올리 디버거의 All referenced Strings을 사용해 관련된 문자열을 찾아보면 주소 458831에 성공과 실패로 가는 분기문이 보인다.

basic15-1

분기문을 잘 살펴보면 eax레지스터에 들어있는 값과 주소45B844안에 들어있는 값을 비교하는 것을 알 수 있는데 프로그램을 분석해보면 eax레지스터의 값은 입력한 시리얼 값을 16진수로 변환한 것임을 알 수 있었다. 그러니 비교하고 있는 주소 45B844안의 값을 10진수로 변환한 값이 플래그 값임을 알 수 있으므로 주소 48B844안에 들어있는 값인 6160을 10진수로 변환한 24928이 플래그 값임을 알 수 있다.

basic15-2