티스토리 뷰

생활/책

[책] 리버스 엔지니어링

Jaeyeon Baek 2017. 4. 1. 21:23


한빛미디어에서 다시 또 대단한 책이 나왔다. 11년전 출간된 Windows 시스템 실행 파일의 구조와 원리를 64비트 환경에 맞도록 재구성하면서 두 권의 책이 발간되었다.

1권은 앞서 언급한 책의 개정판 느낌으로 "IT EXPERT 리버스 엔지니어링 (파일 구조 편)"이고,
2권은 PE의 관점에서 본 리버스 엔지니어링에 초점을 맞추어 간단한 디버깅 툴의 구현을 목적으로하는 "IT EXPERT 리버스 엔지니어링 (디버거 편)" 되시겠다.

평소 어셈블이나 BOF같은 war game에도 많은 흥미가 있었기에 이 책은 내 지식을 살찌우기에 안성맞춤인 책이었다. 하지만 책의 두께 자체가 어마어마 했으니....

비교를 위해 오백원짜리 동적을 올려보았다. 사실 가볍게 읽을만한 내용의 책은 아니다. 어셈블에 대한 최소한의 지식이나 하물며 C/C++에 대한 배경지식이 없다면 읽는 것을 권하지 않는다. 그만큼 호락호락하지 않다는 의미다.


또한 단숨에 정독하려는 생각보다는 어렷을적 책장에 꼽혀있던 백과사전 같은 느낌으로 파트나 분량을 정해놓고 반복해서 읽으면 좋다. (실제로 많은 용어들에 대한 정리가 되어 있기 때문에 사전같은 느낌으로도 좋다.)


책에는 스택 프레임에 대한 설명이 알차게 되어 있고, 메모리에 대한 깊은 이해를 할 수 있도록 도와준다. 사실 요즘 C/C++ 코드를 구현하면서 어셈블러에서 어떻게 해석될지, 혹은 어떤 것이 효율적인 코드에 대한 부분은 많이 놓치고 개발하게 되는데, 이 책은 그러한 것들을 다시금 정리할 수 있는 시간을 갖을 수 있도록 도와준다.


또한 어셈블이나 디어셈블에 대한 설명과 명령어 포맷에 대한 설명이 상세히 기록되어 있어 다방면으로 학습할 수 있어서 좋다. .pdata에 대한 설명도 그림과 함께 상세하게 제공되는데 개발자라면 꼭 알아야하는 개념이기에 확실하게 알고 넘어가야 한다.


책의 내용은 윈도우를 기반으로하고 있지만 리눅서라도 큰 무리 없이 읽을 수 있다. (물론 위에서 언급한 배경지식은 분명 필요함) 하지만 리버스 엔지니어링이나 어셈/디어셈에 관심이 없다면 이 책은 권하지 않는다. 

이유는, 일단 내용 자체가 어렵고 한번 읽어보기 위해 구매하기에는 가격 부담도 적지 않다. 하지만 이쪽 분야에 관심 있는 사람이라면 분명 일독을 권한다.


사실 Low level language를 다루는 사람이라면 분명히 알아야 하는 개념이지만, 요즘 많은 초중급 개발자가 놓치고 있는 부분이라 안타깝기도 한데, 많은 사람들이 보고 한 단계 더 성숙해지기를 바라본다. 

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday