리버스엔지니어링 문제 9

2015. 3. 29. 15:10Security ★ Development/Reversing

반응형


http://codeengn.com/challenges/basic/09


StolenByte는 프로그램의 한 부분을 다른 부분으로 옮긴 코드 구역을 말합니다.  문제를 풀다보면 더 이해가 쉬울겁니다.


패킹 되어있었기에 OEP를 찾으면 해당 위치로옵니다.  그런데 앞부분에 NOP부분들이 있습니다.  그리고 좀 주의깊게 봐야하는데 MessageBoxA함수를 호출하는 부분이 있습니다.  MessageBoxA는 총 4개의 인자를 받습니다.  그런데 위에는 PUSH가 하나밖에 없죠.  앞 부분이 잘려나간겁니다.


OEP로 점프하기 바로 전의 부분입니다.  ASCII 부분에 보면 POPAD 바로 아래 3개의 PUSH가 있습니다.  이 부분이 잘려나간 부분으로 StolenByte에 속합니다.  문제의 답으로는 OPCode가 됩니다.  

6A 00

68 00204000

68 12204000

이를 붙여주면 됩니다.  6A0068002040006812204000