SH1R0_HACKER

Basic RCE L09 본문

Reversing/CodeEngn

Basic RCE L09

SH1R0_HACKER 2020. 10. 23. 18:34

StolenByte를 구하시오 Ex) 75156A0068352040


Author: abex


[ 프로그램 실행 ]

키파일을 체크하고 인증하는 프로그램인 것 같다.

패킹여부부터 확인해보자.

 

패킹을 풀어주자.

 

이제 올리디버거에 올려서 분석해보자.


[ 디버거 분석 ]

abex.l2c 파일이 있는지 확인하는 부분이 눈에 보인다.

파일을 만들어서 실행시키면 다음과 같은 메시지박스가 출력된다.

 

keyfile안에 유효한 키를 넣어야 할 것 같다.

어떤 키를 넣어야 할 지 분석해보자.

 

키파일을 확인하는 메시지박스를 띄우기 전 0x12와 EAX를 CMP하는 곳에 브레이크 포인트를 걸었다.

EAX에는 우리가 만들어 준 abex.l2c 파일에 길이를 검사하는데 0x12 즉 18바이트를 받아야 문제가 없다.

 

abex.l2c파일에 아무문자나 18바이트만큼 채워넣고 프로그램을 실행했다.

 

키 파일을 정상적으로 인식한다.


문제로 돌아와서 StolenByte를 구해보자.

 

언패킹하기 전에는 프로그램을 실행할 때 

 

이런 메시지 박스가 글씨하나 깨지는거 없이 잘 떴지만

 

언패킹을 한 프로그램을 실행하면 메시지박스가 깨진다.

이 부분을 복구를 해보자.

 

똑같은 MessageBoxA인데 차이점이 보인다.

처음 실행되는 메시지 박스에는 무엇인가 빠져있다는 것을 알 수 있다.

 

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxa

MessageBoxA 함수에 대해 살펴보면  hWnd, IpText, IpCaption, uType 이렇게 4개가 들어가야 한다.

 

언팩을 하기 전 원본파일과 언팩한 파일을 올리디버거로 비교해보았다.

 

원본파일 맨 아래쪽에 0040100C로 JMP 하는 코드가 보인다.

이 주소를 언팩한 파일에서 보면 메시지박스로 띄우는 주소인것을 확인할 수 있다.

 

0040736E부터 00407375부분의 값이 패킹된 파일에서 없어진 부분이다.

여기서 문제에대한 정답은 찾을 수 있다.

 

복구를 하는 과정은 다음과 같다.

 

 

'Reversing > CodeEngn' 카테고리의 다른 글

Basic RCE L10  (0) 2020.10.29
Basic RCE L08  (0) 2020.10.23
Basic RCE L07  (0) 2020.10.21
Basic RCE L06  (0) 2020.10.21
Basic RCE L05  (0) 2020.10.19