-
리버스 엔지니어링 2: 디버거 편후기/Book Review 2017. 4. 23. 23:30728x90반응형
리버스 엔지니어링이라고 하면 드는 생각이 먼저 '어려워 보인다'가 아닐까 싶다. 실제로도 그럴것 같은게 이미 만들어진 것을 보고 뜯어서 원래의 것을 도출하고 알아내야 하기 때문이지 않을까. 심지어 책이 매우 두껍다!(무려 1396페이지. 토비의 스프링 3.0만큼 두껍다)
이책은 윈도우 프로그래밍에 대한 리버스 엔지니어링과 고급 디버깅에 관심이 있는 분에게 초점이 맞추어진 중고급이상 레벨의 책이다! 그래서 개발 환경은 윈도우10 + Visual Studio 2013(or 2015), Windows SDK 10이다. 윈도우 프로그래밍에 대해 잘 알지 못해 코드, 덤프등을 봐도 완전히 이해는 못했다.
기본적인 PE(Portable Executable)의 파일구조 등은 1편에서 이미 소개를 했고, 2편에서는 본격적으로 리버스 엔지니어링과 디버거 구현에 대해 설명한다. 초반 어셈블리에 대한 설명에 들어가기 앞서 우리가 사용하는 CPU에 대해 간단히 역사를 훑는다. 32bit에서 64bit 컴퓨터 시대로 넘어올 때 인텔과 AMD의 미묘한 관계는 흥미롭다. 지금도 두 기업의 경쟁이 현재진행형인 점을 보면 둘 다 모두 대단한 기업임이 틀림없다. 어셈블리어에 대한 설명을 보고 있노라니 학부시절 컴퓨터 구조와 임베디드 프로그래밍 하던 시절이 생각이 난다. 레지스터, Accumulator, Program Counter, Stack Pointer 등 중요하면서도 기본적인, 컴퓨터의 근간을 이루는 것들은 다시 한 번 제대로 정리할 필요가 있을 것 같다.
다양한 덤프 코드들과 자세한 그림을 바탕으로 설명이 진행되어 찬찬히 두고 읽으면 꼭 리버스 엔지니어가 아니더라도 많은 도움이 될 책이라 생각이 된다.
윈도우 실행 파일 구조와 원리로 배우는 리버스 엔지니어링 2 디버거 편, 한빛미디어(이호동)반응형'후기 > Book Review' 카테고리의 다른 글
소프트웨어 장인 (0) 2017.06.20 Functional Thinking (함수형 사고) (0) 2017.06.15 JAVA 프로그래밍 면접 이렇게 준비한다 (0) 2017.03.05 행복한 프로그래밍(개정판) (0) 2017.02.13 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0) 2017.01.23