안녕하세요 오랫만에 포스팅이네요 ㅎㅎ 사실 이 문제를 윈7 64bit로 풀려고 죽어라 해보다가 안되서 32bit 깔아서 풀었습니다 ㅠㅠ 그러니까 64bit이신 분들은 저처럼 안될 가능성이 있으니 주의해주세요.
일단 문제입니다.
그런데 OEP란 무엇일까요? OEP란 Oiginal Entry Point로 실제 프로그램의 시작 위치입니다. 그렇다면 먼저 PEID로 프로그램의 정보를 얻어보겠습니다.
UPX로 패킹되어있군요 L05처럼 똑같이 언패킹 해주시면 됩니다.
프로그램의 실제 코드입니다. 00401360으로 시작하는군요? 이 00401360이 이 프로그램의 OEP가 됩니다.
그런데 문자열 찾기로 문제를 풀어보려니 막상 쓸만한 정보가 나오지 않는 것을 확인할 수 있습니다.
그래서 우리는 back to user mode를 사용할 것입니다.
back to user mode란 프로그램의 이벤트를 인식하고 그 이벤트를 사용하는 코드로 이동하는 모드입니다.
이 모드를 사용할 때 주의할 점은 프로그램이 멈춰있는 상태여야한다는 겁니다. 왜냐하면 한 이벤트를 인식하고 그 이벤트로 이동하는건데, 프로그램이 계속 이벤트를 실행하고 있으면 우리가 원하는 이벤트로 이동을 하지 못합니다.
그럼 사용해보겠습니다. 우선 F9를 눌러 프로그램을 실행시키고 아무 문자나 입력하고 틀렸다는 메세지를 띄워봅시다.
지금 이 상태는 확인을 누르기 전까지는 가만히 멈춰있는 상태입니다. 여기서 프로그램을 잠시 중지해보도록 하겠습니다. 상단에 중지 버튼을 눌러보세요.
이 버튼을 누르면 생소한 코드가 나오게 될텐데, 무시해 주시고 우측 하단에 paused로 바뀔겁니다. 여기서 Alt + F9를 눌러주시면 우측 하단이 back to user로 바뀌는걸 확인할 수 있습니다.
그리고 아까 띄워놓은 에러메세지의 확인을 눌러주면 이벤트가 발생한 코드로 이동하는걸 확인할 수 있습니다.
여기서 약간만 코드를 올리면 우리가 원하는 코드를 찾을 수 있습니다.
이 코드만 봐도 시리얼이 무엇일지 짐작이 가죠?
답은 OEP + 시리얼입니다.
덧글을 남겨주시면 큰 힘이 됩니다.★
'해킹 > 리버스 엔지니어링' 카테고리의 다른 글
코드엔진 basic RCE L08 풀이 ( OEP 찾기 ) (0) | 2012.06.09 |
---|---|
코드엔진 basic RCE L07 풀이 (0) | 2012.06.09 |
코드엔진 basic RCE L05 풀이 (UPX 언패킹) (3) | 2012.05.28 |
코드엔진 basic RCE L04 문제 풀이(안티디버거우회) (0) | 2012.05.26 |
코드엔진 basic RCE L03 풀이 (0) | 2012.05.23 |