CodeEngn basic 06

코드엔진 basic 06번 문제풀이

프로그램을 실행하면 처음에 아래와 같은 창이 나타난다.

basic6 basic6-1

아무런 값이나 입력한 뒤 Check Serial 버튼을 클릭하면 위와 같이 실패 메시지 창이 나타난다.

이제 PE View를 이용해서 EP값을 찾아보자. PE View를 사용해 파일을 열어보면 아래와 같이 UPX로 패킹되어 있음을 알 수 있다.

basic6-2

이제 UPX를 사용하여 언패킹 해보자 그러면 아래와 같이 제대로 된 PE구조가 나타나게 되고 OEP값을 찾을 수 있다. (OEP = 401360) (EP = Address of Entry Point + Image Base)

basic6-3

언패킹을 완료했고 OEP값을 찾았으므로 올리 디버거를 이용해 파일을 열어보자

올리 디버거를 이용해 파일을 연 뒤 Search For -> All referenced Strings을 사용해 관련된 문자열이 있는지 찾아보니 아래와 같이 문자열들이 나타났다.

basic6-4

이제 Wrong serial!!! 문자를 클릭하여 004010AC주소로 가서 분석해 보면 주소 00401073 주소에서 시리얼 값을 비교해 같으면 성공 메시지를 띄우고 틀리면 실패 메시지를 띄우는 것으로 확인 됐다. 00401073 주소의 함수의 첫 번째 파라미터를 보면 AD46DFS547이란 문자임을 알 수 있는데 이 값이 시리얼 값임을 알 수 있다.

basic6-5

플래그는 OEP + 패스워드 이므로 00401360AD46DFS547 이다.