문제의 ReadMe 파일이다.
OEP(Original Entry Point)를 찾으라고 한다.
OEP란 프로그램이 처음으로 실행을 시작하는 지점을 의미한다.
패킹 전 프로그램이 시작되는 위치를 찾아라는 의미로 해석된다.
ReversingKr
UnpackMe Find the OEP
ex) 00401000
패킹된 파일을 디버거에서 분석할 때, 메인 함수는 일반적으로 메인 함수처럼 보이지 않거나 전혀 보이지 않을 수도 있다.
이는 패커가 프로그램의 실행 흐름과 코드를 숨기거나 변형하기 때문에 발생한다.
다른 말로 패킹된 파일은 원본 코드를 정상적으로 동작할 수 있게 하기 위해 언패킹 루틴을 가지고 있고 이 언패킹 루틴이 끝나면 원본 파일의 코드가 동작할 것이며 원본 파일의 Entry Point부터 동작해야하기 때문에 원본 코드의 OEP로 점프할 것이다.
즉, OEP 점프하기 전 언패킹 루틴이 마무리 되고 OEP로 분기하는 부분을 찾아야 한다.
우선 패커 정보를 찾기 위해 DIE를 사용했으나 탐지하지 못했다.
x32dbg로 파일을 분석해보면 수많은 분기분과 반복이 존재한다.
이를 언패킹 루틴이라고 볼 수 있다.
언패킹 루틴 후에 OEP로 점프할 것을 예상하여 마지막 분기문에 breakpoint를 걸고 실행하였다.
F7 키를 누르고 해당 함수 내부를 살펴보면 OEP는 401150임을 알 수 있다.
PEiD라는 도구를 사용하여 OEP를 확인할 수도 있었다.
'워게임 > 리버싱' 카테고리의 다른 글
[Dreamhack] Easy Assembly (0) | 2024.09.08 |
---|---|
[Dreamhack] rev-basic-6 (0) | 2024.09.07 |
[Dreamhack] Small Counter (0) | 2024.08.30 |
[Dreamhack] Simple Crack Me (0) | 2024.08.29 |
[Reversing.kr] Easy Keygen (0) | 2024.08.27 |