파일을 다운받아보면 Unregister이라는 폴더에 "Project1" 이라는 프로그램이 있다.

실행시키면 이전에 봤던 문제와 같은 느낌으로 Register KEY를 찾으라고 나온다.

디버거를 열어서 string을 보니까 "Authkey:", "Congratulation!"이라는 문자열이 보여서 해당 위치로 이동해서 확인해 보았다.

"Congratulation!"이 나오는 위쪽 함수의 시작 부분부터 내려오다보니 빈 주소를 EAX, 특정 값을 EDX에 넣은 후 404260 함수를 반복적으로 호출하고 있었다.

해당 부분 실행이 끝난 후 비어있던 EBX+310 부분을 확인하니까 각각 "2V" "B6" "H1" "XS" "0F"를 가르키고 있는 주소의 값으로 채워져 있고 마지막에(EBX+330) 다 합쳐진 "2VB6H1XS0F" 문자열을 가르키는 주소가 저장된다.

그 다음에는 EBP-4의 주소와 EBX+2F4의 값을 가져와서 42F4BC 함수를 실행하는데 이 부분이 끝나고 나면 EBP-4 부분에 내가 입력한 값(여기서 "111111")이 들어가 있다.

다음으로 입력값이 들어가 있는 EBP-4와 "2VB6H1XS0F"이 들어있는 EBX+330을 가져와서 함수를 실행 후 점프문을 수행하는데 아마 그대로 비교하는 함수로 생각되어 입력 폼에 "2VB6H1XS0F"를 입력하니까 AuthKey를 알 수 있었다.

 

함수를 하나하나 분석할 수도 있었지만 큰 흐름만 봐도 프로그램의 동작을 알 수 있었기 때문에 함수가 실행되기 전 후의 차이를 중점적으로 비교하며 분석했다.

 

'forensic > suninatas.com' 카테고리의 다른 글

[suninatas] Level 12  (0) 2021.10.04
[suninatas] Level 10  (0) 2021.10.04
[suninatas] Level 9  (0) 2021.09.10
[suninatas] Level 8  (0) 2021.09.06
[suninatas] Level 7  (0) 2021.09.06

+ Recent posts