CodeEngn Challenges : Basic 14 문제 풀이

안녕하세요 테라트입니다

 

오늘은 Basic 14번 문제 풀도록 하겠습니다

 

URL : https://codeengn.com/challenges/

 

 

Name이 CodeEngn 일때의 값을 구하라고 하네요

일단 프로그램을 실행시켜서 어떻게 동작하는지부터 알아보겠습니다

 

문제에서 주어졌듯이 Name에는 CodeEngn을 입력하고 아무 숫자나 입력해보았습니다

시리얼이 틀리다고 나오네요

 

패킹확인을 해보겠습니다

 

유명한 UPX 패킹이네요,,

UPX 패킹 푸는 방법은 6번 풀이에 나와있습니다

 

저는 그냥 툴을 이용해서 풀어서 확인해보겠습니다

 

All intermodular calls 을 통해서 MessageBoxA API부분을 살펴보다 보니

아까 위에서 확인하였던 오류 메시지가 확인되고

성공 메시지로 추측되는 구간을 확인하였습니다

 

MessageBox가 A와 B 두 군데가 있고 그 위에는 CMP 문과 JNZ 문이 있는 것으로 보아

CMP문의 ESI 안에 정답 값이 들어있을 것으로 추측됩니다

 

브레이크 포인트를 설정하고 실행해보도록하겠습니다

 

일단 아무값이나 넣어서 넘겨줍니다

 

입력해준 값이 EAX에 잘 들어갔는지 확인해보도록 하겠습니다

 

보이는 숫자가 다른데? 라고 생각하실 수 있는데

레지스터에는 16진수로 기록되고 저희가 입력한 값은 10진수이기 때문입니다

 

계산기를 통해 확인해보니 12345가 잘 들어가있었습니다

 

다음으로는 ESI 부분을 확인해보겠습니다

 

여기 적힌 값 또한 16진수이기 때문에 계산기를 통해 10진수로 바꾸어주겠습니다

 

위에서 얻은 10진수 값을 입력해주면 성공 메시지를 확인할 수 있습니다

 

 

문제에서도 적혀 있듯이 답이 여러개 나올 수 있다고 하니 참고하시기 바랍니다!

댓글, 2

테라트

Since 2018.07.03 / IT 관련 정보, 일상의 공유를 위한 블로그