SH1R0_HACKER
Basic RCE L09 본문
StolenByte를 구하시오 Ex) 75156A0068352040
Author: abex
[ 프로그램 실행 ]
키파일을 체크하고 인증하는 프로그램인 것 같다.
패킹여부부터 확인해보자.
패킹을 풀어주자.
이제 올리디버거에 올려서 분석해보자.
[ 디버거 분석 ]
abex.l2c 파일이 있는지 확인하는 부분이 눈에 보인다.
파일을 만들어서 실행시키면 다음과 같은 메시지박스가 출력된다.
keyfile안에 유효한 키를 넣어야 할 것 같다.
어떤 키를 넣어야 할 지 분석해보자.
키파일을 확인하는 메시지박스를 띄우기 전 0x12와 EAX를 CMP하는 곳에 브레이크 포인트를 걸었다.
EAX에는 우리가 만들어 준 abex.l2c 파일에 길이를 검사하는데 0x12 즉 18바이트를 받아야 문제가 없다.
abex.l2c파일에 아무문자나 18바이트만큼 채워넣고 프로그램을 실행했다.
키 파일을 정상적으로 인식한다.
문제로 돌아와서 StolenByte를 구해보자.
언패킹하기 전에는 프로그램을 실행할 때
이런 메시지 박스가 글씨하나 깨지는거 없이 잘 떴지만
언패킹을 한 프로그램을 실행하면 메시지박스가 깨진다.
이 부분을 복구를 해보자.
똑같은 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 |