기본적인 용어
EP : entry point
OEP : origin entry point
PEP : packed entryl point
언패킹은 OEP를 찾는 것이다.
scylla 사용 방법
- 언패킹 후 덤프를 뜨는 것이 목적이라면 먼저 OEP 까지 진입하자.
- 현재 EIP가 OEP에 위치한다면 플러그인 탭에서 Scylla를 선택한다.
- 중간 왼쪽 부분을 보면 현재 EIP 주소에 맞게 OEP가 자동으로 설정되어 있을테니 굳이 추가할 필요는 없고 바로 오른쪽을 보면 "IAT Autosearch"라는 버튼이 있다. 이것을 클릭한다. 클릭 후 두 개 정도의 확인 버튼이 팝업된다.
- 다음으로는 바로 아래의 버튼인 "Get Imports" 버튼을 클릭한다.
- 이후 오른쪽의 "Dump" 버튼을 클릭하면 덤프된 exe를 저장시킬 위치를 선택할 수 있다. 기본적으로 원본 exe 이름 뒤에 "_dump"라는 이름이 붙어서 저장되는 것을 볼 수 있을 것이다. 저장된 결과물은 간단하게 덤프한 것으로서 IAT가 복구되지 않아서 실행되지 않을 것이다.
- 이제 바로 아래의 "Fix Dump" 버튼을 클릭한다. 그리고 방금 전 저장했던 덤프한 exe 파일을 불러온다. 그러면 또 다른 실행 파일이 생성되며 (이름 뒤에 "_SCY"가 붙는다) 최종 결과물로서 실행까지 되는 것을 확인할 수 있다.
OEP를 찾는법
-
패커에 따라 언패킹하는 방식은 모두 다르다.
-
하지만, 기본적으로 프로그램이 실행되기 위해서 상대 메모리 주소가 패킹 이전과 같아야 한다.
-
코드 영역으로 들어가면 그 것이 OEP라고 의심할 수 있다.