메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

[한빛미디어] 리버스 엔지니어링 - 2권 디버거 편 리뷰

jrcfore***

|

2017-03-19

리버스 엔지니어링 2권(디버거 편)

리버스 엔지니어라면 반드시 소장해야 할 최고 명저의 재래. 리버스 엔지니어링을 진수! 디버거 제작에 도전하라!

  • 저자 : 이호동
  • 출간 : 2017-03-01

리뷰자 김종욱

 

B7638826095_l.jpg

 

클로버 리버스 엔지니어링 - 디버거 편

이호동 지음

 

 본 서는 상당한 두께를 자랑하지만 그만큼 알찬 내용들로 가득차있는 책이다. 더욱이 Windows 시스템 실행 파일의 구조를 자세히 설명함으로써 윈도우 시스템의 구동 방식은 물론, 시스템 실행 파일이 어떤식으로 동작하는지에 대해서 굉장히 잘 술해져있는 책이다. 과히 컴퓨터 계의 명서라 해도 될 것이다. 이러한 본 리버스 엔지니어링 시리즈 중 2번째 책인 디버거 편은 본 서를 읽는 독자가 직접 디버거를 만들어 가면서 실습할 수 있는 환경을 제공해주는 말로다 표현 할 수 없는 훌륭한 도서이다. 따라서 윈도우 프로그래밍을 입문하고 자 하는 사람이라면 반드시 한번 쯤은 정독해 보길 권한다. 만약 마스터의 길을 가고 싶다면, 수십번 다독할 것을 권한다.


책의 리뷰를 본격적으로 하기에 앞서 어떤 사람들이 본 서적을 읽으면 좋을지 적어보도록 하겠다.

 


【어떤 독자를 위한 책인가

 

  이 책은 입문자들이 읽기에는 꾀나 어려운 지식들이 있다. 물론 저자가 최대한 자세히 설명하려 하였으나, 본 블로거의 지극히 개인적인 생각으로는 자료구조, 알고리즘, 그리고 리버싱 엔지니어링과 디버깅 방법론과 같은 기초 지식들을 어느정도 쌓은 사람이 읽어야 학습효과가 확실할 것이란 생각이 들었다. 본 블로거의 경우 본 서를 받고 1주일 정도에 걸쳐 1회 독 하고, 틈틈히 쳅터별로 궁금한 내용이 있으면 참조하는 형태로 학습하고 있다. 그럼에도 학습할 양이 무궁무진한 만큼, 기초지식이 없는 독자가 읽기에는 장벽이 있는 도서라 생각된다.

    

【책의 구성】 '리버스 엔지니어링 - 디버거편책의 구성은 어떠한가.


망치 본 서는 1권에 이어 2권에 못다한 챕터 내용을 출간한 책이다. 따라서 총21장으로 구성되어있는 책 중에서 본 서에서는 11~21장에걸친 내용들을 다루고 있다. 처음에는 디스 어셈블에 필요한 어셈 코드를 위해서 CPU 와 어셈과 같은 기초 지식들을 다루고, 그 이후에 코드 섹션에 관한 함수, 이에 대한 디스어셈블링 방법, PDB에 관한 설명과 SEH에 대한 설명, 메모리 보호 최종적으로 디버거 구현으로 서가 구성되어 있다. 각 챕터에 대한 자세한 내용은 다음과 같으며 저자가 설명과 함께 구체적인 소스코드를 전부 기제해 두었기 때문에 금방 이해할 수 있는 구조로 되어있다. 거의 대부분의 책들은 단순 글로만 설명하는 경향이 있었는데, 본 서는 그러한 한계점을 과감히 극복해냈다고 볼 수 있었다. 따라서 코드에 대한 울렁증, 어떻게 구현해야할지 막막하여 디버거 쪽은 손도 못대보신 분들이라면 꼭 본 서를 읽어보시길 권한다.


> 책 목록

[4부 코드 분석]

 

11장 어셈블리 언어 개요

__11.1 CPU 개요

__11.2 어셈블리 둘러 보기

 

12장 코드 섹션과 함수

__12.1 32비트에서의 함수

__12.2 64비트에서의 함수

 

13장 코드 섹션 디스어셈블링

__13.1 명령 포맷

__13.2 OP 코드 상세

__13.3 디스어셈블러 구현

__13.4 코드 섹션 함수 구성

 

14장 디버그 섹션과 PDB

__14.1 디버그 섹션

__14.2 PDB 분석

__14.3 PDB PE

 

[5부 예외 처리]

 

15장 구조적 예외 처리(SEH)

__15.1 SEH의 개요

__15.2 종료 처리

__15.3 예외 처리

__15.4 처리되지 않은 예외

__15.5 C++ SEH

 

16 32비트 SEH

__16.1 Win32에서의 SEH 구조

__16.2 컴파일러 레벨의 SEH 

__16.3 C++ 예외 핸들러 

 

17장 함수예외와 .pdata 섹션

__17.1 .pdata 섹션

__17.2 해제 정보

__17.3 예외/종료 핸들러 정보

 

18 64비트 SEH

__18.1 함수 호출 스택과 해제 처리

__18.2 SEH 관련 64비트 전용 API

__18.3 64비트 SEH 처리 과정

 

19장 메모리 보호

__19.1 스택 오버플로 공격과 GS

__19.2 다양한 메모리 보호 방식

 

[6부 디버거 구현]

 

20장 디버거 기본

__20.1 디버깅 작동 원리

__20.2 디버거 PE Frontier 구성

 

21장 디버거 심화

__21.1 중단점 설정

__21.2 디버거 PE Frontier 심화

 


【리버스 엔지니어링 - 디버거편을 읽으며…….】

 프로그래밍에 있어서 가장 중요한 것은 자신이 만든 프로그램을 잘 디버깅 할 줄 아냐이다. 왜냐하면 자신이 만든 서비스를 타인에게 제공하는데 있어서 어디가 문제점이고, 어느 부분에서 버그가 발생했는지 찾지 못한다면 그것은 서비스의 실패로 이어지고, 이로 인해 해당 회사의 신용은 바닥으로 곤두박질 치는 것은 불보듯 뻔하기 때문이다. 따라서 본 블로그 글을 읽는 프로그래머 분들이 있다면 리버싱, 디스어셈블리를 꼭 배워 보다 전문화된 프로그래머가 되길 바란다.



 

【점수…….】

구성 : ★★★★☆ 내용:★★★★☆  디자인: ★★★★☆ 전문성 : ★★


#본 리뷰는 리뷰자 김종욱의 저작권에 귀속되므로 참고시 참고 URL과 명시를 저작자에게 알려주시길 바랍니다.

#본 리뷰의 점수 및 평가 내용은 김종욱 리뷰자의 한정된 것이므로 확정된 답이 안임을 명시합니다.

#학습과 관련된 질문과 문제에 대한 질문은 일절 받지 않습니다. 스스로 찾아서 학습하는 것 그것이야 말로 진정한 학습자입니다. 



######  감사합니다  ######  

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?