Reversing

바이너리 패치 후 파일 실행 오류

clarus 2011. 8. 29. 14:48
실행 파일이 메모리에 로딩되어 프로세스로써 실행될 때 그대로 1:1로 로딩되는 것이 아니라,
규칙에 의해서 올라가게 되며 보통은 파일과 메모리가 1:1로 매칭 되지 않음

즉, 메모리에 대응되는 파일 오프셋이 존재하지 않으므로 수정된 코드를 파일로 만들면 오동작 하게 됨.

- PE Header를 분석하여 파일에 존재하지만 프로그램에서 사용되지 않는 공간을 버퍼영역으로 선정
- 파일 끝을 버퍼 영역 만큼 확장하고, PE header 를 수정하여 그 부분을 메모리에 로딩