티스토리 뷰

생활/책

[책] 리버스 엔지니어링

Jaeyeon Baek 2017.04.01 21:23


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

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

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

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


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


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


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


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

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


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

댓글
  • 프로필사진 BlogIcon 조아하자 정말 엄청 두꺼워 보이긴 하네요. 저도 한때는 개발자였는데 그 일을 그만둬서... 2017.04.03 13:12 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 한번에 정독해서 읽기에는 굉장히 큰 무리가 따르는 책입니다. :-) 백과사전 같은 느낌으로 틈틈이 읽으면 좋아요. 2017.04.03 17:03 신고
  • 프로필사진 domino123 질문이 있는데요,혹시 이 책 읽기 전에 WINDOWS 시스템 실행파일의 구조와 원리 를 먼저 봐얄지요? 아님 1권에 전작의 내용이 거의 포함되어 있는 건가요? 아시는 대로 또는 느끼신대로 조언 부탁드립니다. 2017.07.08 19:30
  • 프로필사진 BlogIcon Jaeyeon Baek 1권이 이전 책의 개정판이라고 보시면 되는데 달라진 것은 64비트 윈도우 환경에서의 실행 파일을 위주로 다루고 있다고 합니다 :-) 2017.07.08 22:57 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 디버거 편은 아무래도 1권을 보고 나서 보는게 좋을 것 같은데 PE에 대한 배경지식이 충분하다면 생략해도 될 듯 합니다. 2017.07.08 22:59 신고
  • 프로필사진 domino123 윈도 개발자 출신은 아니며, 전작에 대한 지식도 없습니다. 그냥 업무상, 혼자 인터넷상에서 아주 아주 조금 서당개처럼 들은 것 뿐이라서요. 그래서 전작을 먼저 봐야 하는지 고민을 많이 하고 있습니다. 처음부터 이번 개정판을 보기엔 제 수준이 초보이기에요. 서두가 너무 길었는데 초보가 보기엔 전작부터 공부하면서 시작하는게 나을런지요? 즉, 32비트조차 모르는 상태라서 32비트공부하고 64비트 공부하려는 계획입니다. 개인적으로도 리버싱에 대한 지식을 쌓고자 합니다. 성격상 이왕 하는 거 제대로 길을 밟아 올라갈까 합니다. 한 번 더 조언 부탁드립니다. 감사합니다. 2017.07.08 23:24
  • 프로필사진 BlogIcon Jaeyeon Baek 개정판이 나온 상황에서 이전 책을 볼 이유가 없다고 생각됩니다. 특수한 목적으로 32비트를 공부할게 아니라면요. 개정판 보시는게 좋을 듯 합니다 :-) 2017.07.08 23:28 신고
  • 프로필사진 domino123 잘 알겠습니다. 서점에 가서 다시 한 번 내용을 확인하고 사야겠습니다. (어차피 살 건 확정된 건데 잘 할 수 있을지 겁이 나서요^^) 고견 감사드리며, 더운 나날에 건강하십시요. 감사합니다. 2017.07.09 11:24
  • 프로필사진 BlogIcon Jaeyeon Baek 감사합니다. :-) 2017.07.09 14:45 신고
댓글쓰기 폼