Korean :
StolenByte를 구하시오
Ex) 75156A0068352040
파일을 PEiD로 열어보면 UPX로 패킹되어 있다.
없어진 바이트를 찾는 문제인데, JMP OEP를 따라가보면 0040100C로 점프하고 그다음에 PUSH 0을 하고 바로 MessageBoxA() API를 실행하는데,
그 이전의 필요한 파라미터는 이미 스택에 들어가 있다.
왜 OEP에서 MessageBoxA() 를 위한 파라미터 4개를 push하지 않고 패커가 3개를 스택에서 넣고 OEP에서 시작하지? 라는 생각을 하게되어
PEviewer로 UPX0 섹션의 RVA값이 1000으로 되어있음을 보았다.
따라서, Imagebase+RVA = 00401000이 OEP의 주소인데 0040100C로 변경되어있는 것을 보면 잃어버린 바이트는 12바이트 임을 알 수 있다.
그래서 Ctrl+F2로 재시작 후 패커의 밑부분을 보면,
PUSH 0
PUSH 09.00402000(문자열 주소)
PUSH 09.00402012(문자열 주소)
인 부분이 있다. 이부분의 기계어 코드를 쭉 나열한 것이 답이다.
답 : 6A0068002040006812204000
'WARGAME > codeengn' 카테고리의 다른 글
코드엔진 베이직 11 (0) | 2014.12.13 |
---|---|
코드엔진 베이직 10 (0) | 2014.12.13 |
코드엔진 베이직 8 (0) | 2014.12.11 |
코드엔진 베이직 7 (0) | 2014.12.10 |
코드엔진 베이직 6 (0) | 2014.12.09 |