이 책은 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에 대해서도 살짝 다루어주면 좋겠다.
개발관련 사이트를 다니다 보면 간간히 후킹이나 파일구조의 간략한 강좌정도는 있었지만
지금까지 시중에 나와있는 국내서적중에 윈도우기반의 실행파일에 대해서
이렇게 자세히 나와 있는책은 없었던거 같다.
필자가 종종 윈도우시스템에 대한 서평을 쓸대는 거론하는 파괴의 광학에서도
부분적으로만 다루어 실질적인 개발보다는 분석에 중심을 두었다고 밖에 볼수 없었는데
응용프로그램 개발자에게 꼭 필요한 책이 나온거 같다.
실행가능한 파일의 구조부터 세부적인 영역에 대한 설명...
후킹이나 디버깅에 관련된 정보들...
내부적인 깊이있는 지식을 갖지 않고서는 쓸수 없는 분야에 대해 자세히 다룬에 대해
감사를 드린다 ^^