이 책은 PE(Portable Executable)라고도 불리우는 윈도우즈 실행 파일의 내부 구조에 대해서 다룬다.
EXE, DLL, OCX, SYS, DRV 확장자들로 된 파일들이 모두 PE파일이다.
이런 파일들이 실행되는 순간에 메모리에 어떻게 매핑되고 그 자료구조는 어떻게 구성되는지를 하나 하나 따라가면서 친절하게 설명해준다.
이 책을 읽기 전에 제프리리처의 Windows Via C/C++ 중
13장 윈도우 메모리의 구조
14장 가상 메모리 살펴보기
17장 메모리 맵 파일
19장 DLL의 기본
20장 DLL의 고급 기법
부분을 읽어보는 것이 이 책을 이해하는데 많은 도움이 된다.
처음에는 헥사코드를 하나씩 따라가면서 정독해서 읽었는데, 관련 구조체들이 다 비슷비슷 하게 구성되어 있어서 중간쯤 부터는 그런 부분들을 제껴가면서 조금 더 편하게 읽었다.
개인적으로 DLL의 내부에 대해서 많은 것을 얻을 수 있어서 좋았고, 또 리소스에 대해서는 거의 아는 것이 없었는데, 이 부분을 많이 다루어 주어서 특히 좋았다.
이 책의 단점을 꼽자면, 그림이나 코드들이 보기에 너무 조잡하다는 것이다.
그리고 느낌표나 말줄임표를 잔뜩 붙여놓은 문장들이 곳곳에서 보이는데, 이는 잘 정제되지 못한 글의 느낌을 받게 한다. 마치 인터넷에 써서 올렸던 글을 추려서 책으로 낸듯이 말이다.
저자는 프로그래머이지 글쟁이가 아니므로 이런 것들은 출판사에서 신경을 써준다면 좋을 것 같다.
비슷한 경우로 김상형의 Windows API 정복이라는 명서가 있는데, 나는 이 책을 국내에서 출판된 가장 잘 쓰여진 프로그래밍 책이라고 생각하지만, 책 안의 그림들이 참 조잡하다.
이 책은 가남사에서 출판되었다가 한빛미디어에서 개정되었는데, 그림들이나 표는 그대로 옮긴 것 같다.
저자가 그린 그림을 제출하면 편집없이 그대로 실는 것 같은 느낌인데, 만약 정말 그렇다면 앞으로는 그렇게하지 않았으면 좋겠다.
오라일리 같은 출판사에서 발행하는 책들은 그림이나 표가 참 이쁘게 그려져있다. 그 책을 쓰는 저자들이 모두 그림을 잘 그려서 그런 것은 아닐 것이다.
출판사에 바라는 점을 몇 가지 정리하면 다음과 같다.
1. 코드 조각은 회색 박스로 둘러싼다.
2. 코드 폰트는 고정폭 폰트를 쓴다.(그리고 제발 좀 이쁜 폰트로)
3. 지저분한 그림이나 표는 예쁘게 다시 그린다.
쓰다보니 단점의 내용이 길어져 버렸는데, 이 책은 정말 좋은 책이다.
이런 지식을 얻으려면, Matt Pietrek이 쓴 다음과 같은 글들을 눈 빠지게 읽어야 하는데
보기만해도 질려버린다.
Peering Inside the PE: A Tour of the Win32 Portable Executable File Format
An In-Depth Look into the Win32 Portable Executable File Format
An In-Depth Look into the Win32 Portable Executable File Format, Part 2
이미 이 책의 저자가 다 공부해서 한글로 써주었으니 참 고마울 뿐이다.
이 책이 개정판이 또 나올 것 같지는 않지만 혹시 개정된다면, 위에서 말한 부분들의 교정과 함께 64bit PE나 Managed PE에 대해서도 살짝 다루어주면 좋겠다.