코드엔진 basic 05번

2021. 9. 25. 14:26Wargame 공부/CodeEngn basic

프로그램을 실행해 보면 아래와 같은 창이 뜨는 것을 볼 수 있다.

아무런 값을 입력한 뒤 아래의 Register now!버튼을 누르면 이런 창이 뜨는 것을 볼 수 있다.

이제 프로그램을 분석 전에 PE View를 이용하여 파일을 열어 보면 아래와 같이 UPX로 패킹 되어 있는 것을 볼 수 있다.

패킹이 되어 있으므로 upx로 언패킹을 시켜준 뒤 다시 확인해 보면 아래와 같이 변한 PE 구조를 볼 수 있다.

이제 언패킹이 완료되었으니 올리 디버거를 사용하여 프로그램을 열고 올리 디버거의

Search for -> All referenced strings 기능을 사용해 키인증을 실패했을 때 열리는 창에서 나타나는 문자열인 Wrong Serial try again이라는이라는 문자열을 찾으면 아래와 같이 440F79 주소와 440F93 주소에 있는 것이 확인된다.

이 문자열은 키 입력 값이 다를 때 나타나는 문자열 이므로 이 주소 값 위에는 키를 비교하여 다를 경우 이 주소로 보내는 분기가 있을 것이라고 생각하였고 위로 천천히 올리면서 디버거를 분석한 결과 아래의 값처럼 분기가 나오는 것을 찾을 수 있었다.

위의 사진을 보면 GFX-754-IER-954란 값을 이용하여 사용자의 입력 값과 비교한 뒤 같으면 ZF1로 설정하고 다를 경우 JNE를 통해 Wrong Serial try again! 문자를 나타내는 것으로 보인다. 키 값을 찾았으므로 프로그램을 다시 실행해 보면 아래와 같이 또 실패 문자가 나오는 것을 볼 수 있다.

다시 올리 디버거로 돌아가서 좀 더 분석을 해보면 아래 그림처럼 실패 문자로 가는 점프가 하나 더 있는 것을 볼 수 있다.

이 주소는 Registered User라는 값을 사용자 입력 값과 비교하여 같으면 ZF1로 설정하므로 다시 프로그램을 실행시켜 입력해보면 성공 문자가 뜨는 것을 볼 수 있다.

'Wargame 공부 > CodeEngn basic' 카테고리의 다른 글

코드엔진 basic 07번  (0) 2021.09.25
코드엔진 basic 06번  (0) 2021.09.25
코드엔진 basic 04번  (0) 2021.09.25
코드엔진 basic 02번  (0) 2021.09.25
코드엔진 basic 01번  (0) 2021.09.25