본문 바로가기

WARGAME/codeengn

코드엔진 베이직 9

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