장바구니 담기 close

장바구니에 상품을 담았습니다.

실전 연습으로 완성하는 리버싱

실전 연습으로 완성하는 리버싱

  • 데니스 유리체프
  • |
  • 에이콘출판
  • |
  • 2015-01-29 출간
  • |
  • 1160페이지
  • |
  • 188 X 250 X 48 mm /1984g
  • |
  • ISBN 9788960776647
★★★★★ 평점(10/10) | 리뷰(1)
판매가

59,800원

즉시할인가

53,820

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
53,820

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

★ 요약 ★

국내 출간된 리버싱 서적 중 다양한 아키텍처를 비교하며 배울 수 있게 구성된 책은 이 책이 유일하다. 따라서 이 책은 리버싱 공부를 시작하는 초보자뿐만 아니라 다양한 플랫폼으로 자신의 리버싱 능력을 확장하고자 하는 중급 이상 개발자에게도 더할 나위 없이 좋다. 풍부한 예제와 흥미로운 실전 연습문제를 해결하다 보면 x86 윈도우, 리눅스부터 64비트 모바일 ARM iOS 리버싱까지 섭렵한 자신을 발견할 수 있다.

★ 이 책에 쏟아진 찬사 ★

이렇게 잘 쓴 글을 무료로 배포하다니 끝내준다. 서슴없이 그에게 50불을 보내줬다.
- 대니얼 빌라(Daniel Bilar) / 씨지 테크놀로지(Siege Technologies), 트위터(@daniel_bilar) 글에서

데니스 유리체프가 쓴 온라인 무료 문서를 읽었다. 훌륭하다!
- 피트 피니건(Pete Finnigan) / 오라클(Oracle) RDBMS 보안 전문가, 트위터(@petefinnigan) 글에서

흥미로운 책이다. 대단한 작업을 해냈다!
- 마이클 시코스키(Michael Sikorski) / 『실전 악성코드와 멀웨어 분석』(에이콘출판, 2013) 저자

이 훌륭한 리버싱 가이드에 찬사를 보낸다!
- 헤어버트 보쉬(Herbert Bos) / VU 대학교 암스테르담의 정교수

믿기 어려울 정도로 놀라운 책이다.
- 루이스 로차(Luis Rocha) / CISSP/ISSAP, 버라이즌 비즈니스(Verizon Business)의 네트워크 및 정보보안 기술 매니저

엄청난 노력과 훌륭한 책에 감사를 표한다.
- 요리스 판 더 피스(Joris van de Vis) / SAP 넷위버 및 보안 분야 전문가

적절한 리버싱 기술 입문서다.
- 마이크 스테이(Mike Stay) / 미연방법집행훈련센터의 강사, 레딧닷컴(reddit.com) 리뷰글에서

정말 마음에 드는 책이다! 이 책을 읽는 학생을 여럿 봤으며, 대학원 과목 강의에서 활용할 예정이다.
- 세르게이 브라투스(Sergey Bratus) / 다트머스 대학 컴퓨터과학 학부의 연구조교수, 트위터(@sergeybratus) 글에서

★ 이 책에서 다루는 내용 ★

■ 윈도우, 리눅스, 맥, 모바일 플랫폼 등 다양한 운영체제에 따른 소프트웨어 리버싱
■ 리버싱을 할 때 꼭 알고 있어야 할 코드 패턴 익히기
■ 여러가지 정보를 활용해 코드의 주요 부분을 찾아내는 방법
■ 리버싱 작업의 생산성을 높일 수 있는 운영체제 특기 사항
■ 리버싱에 유용한 도구 소개
■ 재미있는 예제부터 대규모 소프트웨어 리버싱까지 다양한 실전 연습
■ 비공개 파일 포맷을 리버싱하고 분석하는 방법
■ 리버싱 작업 시 알아두면 좋을 광범위한 내용 설명
■ 각종 참고 자료와 연습문제 활용

★ 이 책의 대상 독자 ★

직접적인 대상 독자는 악성코드 분석과 취약점 분석, 버그 헌팅 등을 공부하고자 하는 사람이다. 해당 분야의 전문가라 하더라도 다양한 플랫폼으로 자신의 능력을 확장하고자 하는 사람이라면 이 책에서 많은 도움을 받을 수 있다. C/C++ 언어에 익숙한 사람이라면 충분히 이해할 수 있기에 리버싱에 관심만 있다면 보안 초보자도 어렵지 않게 읽을 수 있다.

★ 이 책의 구성 ★

1부, '코드 패턴'은 책의 절반 이상을 차지하는 주요 부분이다. 스택, 함수 프롤로그와 에필로그, 함수 인자 처리 등의 기본 사항에서부터 리버싱 시 반드시 알고 있어야 할 다양한 코드 패턴에 이르기까지 리버싱 기본의 모든 것을 다룬다. C 언어의 핵심인 포인터, 루프, 문자열 처리, 배열, 구조체 등은 물론이고 SIMD, 64비트, 인라인 함수, ARM 특기 사항, 난독화, 객체지향 언어 C++ 리버싱 등 폭넓은 코드 패턴을 설명하므로 기존 리버스 엔지니어도 배울 수 있는 내용이 많다.

2부, '꼭 알아둘 기본 사항'은 리버싱 세계에 뛰어들기 전에 반드시 이해해야 하는 내용인 컴퓨터의 숫자 표현 방식, 메모리 유형 등을 다룬다.

3부, '코드에서 중요하고 흥미로운 부분 찾아내기'는 아무런 근거 없이 코드를 처음부터 끝까지 분석하는 건 리버싱 공부에는 도움이 될지 몰라도 업무 생산성 측면에서는 매우 비효율적인 작업이다. 다시 말해서 바이너리 분석 시 매우 중요한 작업은 자세히 분석할 부분을 찾아내는 것이다. 3부에서는 바이너리 생성에 사용된 컴파일러, API, 문자열 등 다양한 정보를 활용해서 코드의 주요 부분을 찾아내는 방법을 설명한다.

4부, '운영체제 특기 사항'은 운영체제에 따른 호출 규약과 시스템 호출의 차이, 리눅스의 위치 독립적 코드와 윈도우의 SEH 등 코드 이해에 큰 도움이 되는 사항을 알아본다. 3부와 함께 리버싱 작업의 생산성을 높일 수 있는 내용을 다루는 부분이다.

5부, '도구'에서는 리버싱에 유용한 도구를 소개한다.

6부, '실전 예제'에서는 윈도우 작업 관리자, 게임, 동글 해킹처럼 재밌는 실전 예제부터 SAP이나 오라클 같은 대규모 소프트웨어의 리버싱까지 설명한다. 앞서 공부한 내용을 실제 리버싱 환경에서 어떻게 활용하는지 배울 수 있다.

7부, '비공개 파일 포맷 리버싱 예'에서는 악성코드나 소프트웨어 취약점을 분석하다 보면 실행 바이너리 이외의 파일을 분석해야 하는 경우도 있다. 7부에서는 이런 종류의 파일을 어떻게 리버싱하고 그 내용을 이해할 수 있는지 다룬다.

8부, '기타 사항'에서는 npad, 컴파일러 인트린직 등 한 가지 주제로 묶긴 어렵지만 리버싱 작업 시 알아두면 편리한 내용을 한데 모아 설명한다.

9부, '추천 책과 블로그'에서는 리버싱 공부 시 참고하면 좋은 책과 블로그를 소개한다.

10부, '연습문제'에서는 쉽게 해결할 수 있는 1단계부터 하루 혹은 며칠을 투자해야 풀 수 있는 3단계까지, 책에서 다룬 내용을 몸으로 익힐 수 있는 연습문제를 제공한다. 연습문제를 모두 해결하면 상당한 수준의 리버스 엔지니어 경지에 오를 수 있을 것이다.

'부록'에서는 x86과 ARM에 쓰이는 용어와 꼭 알아두면 좋을 사항, GCC와 MSVC 라이브러리 함수, IDA와 OllyDbg에서 활용할 수 있는 치트시트, 이 책의 연습문제 풀이, 약어집과 용어 정리, 참고 문헌 등을 제공한다.

★ 저자 서문 ★

우선, 이 책의 한국어판 출간 작업을 진행한 에이콘출판사와의 작업이 매우 원활해서 대단히 행복했다. 내가 아는 기술 서적 저자에게도 에이콘을 추천해볼 생각이다. 한국어 번역을 맡은 민병호 님에게도 감사의 말을 전한다.

원자력 시설 등 잘 알려진 기관을 대상으로 행해진 악명 높은 공격을 놓고 봤을 때 리버스 엔지니어링은 미래가 아니라 지금 당장 굉장히 중요한 기술이다. 모두 알다시피 사이버전쟁은 현실이며, 보안 전문가들은 전장에서 치열한 전투를 벌이고 있다. 리버스 엔지니어링에 대한 지식 없이 악성코드나 백도어, 취약점 등을 분석하는 건 불가능하다.

리버스 엔지니어링은 소프트웨어와 하드웨어 시스템의 동작을 이해하고 해킹함으로써 시스템을 개선하는 작업처럼 좀 더 평화로운 분야에도 적용할 수 있다. 나는 호기심 많은 해커로 보안 경력을 시작했으며, 이제까지 쌓은 지식의 상당 부분은 이런 보안 개선 작업을 통해 습득한 것이다.

이 책이 독자 여러분의 리버스 엔지니어링 공부에 도움이 되면 좋겠다. 리버스 엔지니어링도 여타 기술처럼 평생 공부해야 하는 분야다. 부디 이 책이 여러분의 끝없는 여행을 돕는 주춧돌이 되기 바란다.

★ 역자 서문 ★

<삼국지>라는 게임이 시리즈로 연이어 성공할 때 처음으로 리버싱이란 개념을 들었다. 몇 가지의 삼국지 게임 에디터를 어렵지 않게 구할 수 있는 때였는데, 나는 그 원리가 궁금했고 수소문 끝에 게임 바이너리와 메모리를 분석하고 변조하면 장수의 능력치와 장비를 수정할 수 있다는 사실을 알게 됐다. 장수의 능력치를 수정하는 간단한 에디터를 구현하는 데까지는 성공했지만, 시중의 에디터보다 좋은 점이 없었기에(나중에 안 사실이지만 당시 가장 강력한 에디터는 대학 동기가 개발한 것이었다) 개발을 중단했다. 시간이 흘러 대학생이 된 후 보안 동아리에 가입하면서 리버싱을 다시 접하게 됐다. 이때에는 소스코드가 공개되지 않은 소프트웨어의 동작을 분석하고 보안 취약점을 찾기 위한 목적으로 좀 더 진지하게 리버싱을 공부했다.

독자 여러분도 각자의 동기를 가지고 리버싱 공부를 시작했을 것이다. 지난 몇 년 동안 리버싱 책이 꽤 많이 출간됐지만, 이 책은 여러 측면에서 이제까지 국내에 출간된 책과 분명히 차별화된다. 우선 이 책의 가장 큰 장점은 주로 x86 윈도우 리버싱을 다룬 기존 서적과 달리 다양한 아키텍처와 플랫폼을 다뤘다는 점이다. 단순히 여러 아키텍처를 순차적으로 설명하는 방식이 아니라, 한 프로그램을 여러 아키텍처용으로 컴파일한 후 결과를 비교 설명하기 때문에 윈도우를 비롯해 리눅스와 맥, 모바일 플랫폼용 소프트웨어까지 리버싱해야 하는 독자에게 최고의 선물이 될 수 있다. 특히 윈도우 리버싱에는 익숙하지만 다른 아키텍처는 낯선 독자들은 이 책에서 다른 아키텍처의 리버싱을 정복하는 지름길을 찾을 수 있을 것이다.

엄청난 분량에도 불구하고, 운영체제나 악성코드 등 배경 지식 설명에 상당량을 할당한 기존 서적들과는 달리 책의 대부분이 리버싱과 직접 관련된 내용이라는 점도 놀랍다. 덕분에 초보자에게는 더할 나위 없이 좋은 교과서며, 중급 이상자에게는 저자만의 리버싱 팁을 배울 수 있는 비기가 된다. 또한 바이너리 분석 시 기억해두면 좋은 코드 패턴을 집대성한 부분에서는 리버싱 작업의 시간 절약 노하우까지 배울 수 있다. 리버싱 작업 시 필요한 수많은 명령어와 아키텍처별 특징을 모두 기억하기 어렵다는 점을 잘 이해하는 저자는 이 책을 참고 서적으로도 활용할 수 있게 관련 내용을 한데 모아두고 있다. 이 책은 저자의 공식 문서 사이트인 http://beginners.re/에서 영문판과 러시아어판이 무료로 배포되고 있어서 현재 시점에서 누구나 온라인 문서 파일을 내려받을 수 있다. 저자의 온라인 문서는 세계 최초로 종이책으로 출간된 한국어판에 이어 곧 영문판으로도 공식 출간될 예정이라고 들었다.

옮긴이로서 바라건대, 부디 리버싱을 막 시작한 독자와 자신의 리버싱 능력을 다양한 아키텍처로 확장하고자 하는 독자, 그 밖에 다양한 동기로 책을 구매한 모든 독자가 소기의 목적을 달성하는 데 도움이 된다면 좋겠다. 책을 읽는 데서 그치지 않고 책의 예제와 연습문제를 실제로 해결하다 보면 목표한 바를 반드시 이룰 수 있을 것이다.

목차

1부 코드 패턴
1장 간단한 CPU 입문
2장 헬로, 월드!
3장 함수 프롤로그와 에필로그
4장 스택
5장 여러 개의 인자를 취하는 printf()
6장 scanf()
7장 전달된 인자에 접근
8장 리턴 결과 더 알아보기
9장 포인터
10장 GOTO
11장 조건부 점프
12장 switch()/case/default
13장 루프
14장 간단한 C 문자열 처리
15장 산술 연산 명령어 치환
16장 부동소수점 장치
17장 배열
18장 특정 비트 처리
19장 구조체
20장 공용체
21장 함수 포인터
22장 32비트 환경에서의 64비트 값
23장 SIMD
24장 64비트
25장 SIMD로 부동소수점 숫자 처리
26장 온도 변환
27장 피보나치 수열
28장 C99의 restrict
29장 인라인 함수
30장 부정확한 디스어셈블링된 코드
31장 C++
32장 난독화
33장 ARM 심화 학습
34장 윈도우 16비트

2부 꼭 알아둘 기본 사항
35장 부호 있는 숫자의 표현
36장 엔디안
37장 메모리
38장 CPU

3부 코드에서 중요하고 흥미로운 부분 찾아내기
39장 실행 파일 식별
40장 프로그램 외부와의 통신(Win32)
41장 문자열
42장 assert() 호출
43장 상수
44장 특정 명령어 찾아내기
45장 의심스러운 코드 패턴
46장 추적 중에 매직 숫자 사용
47장 기타 사항
48장 오래됐지만 흥미로운 기술

4부 운영체제 특기 사항
49장 인자 전달 방법(호출 규약)
50장 스레드 지역 저장소
51장 시스템 호출(syscall)
52장 리눅스
53장 윈도우 NT

5부 도구
54장 디스어셈블러
55장 디버거
56장 시스템 호출 추적
57장 디컴파일러
58장 기타 도구

6부 실전 예제
59장 작업 관리자 속이기(윈도우 비스타)
60장 컬러 라인스 게임 해킹
61장 지뢰 찾기(윈도우 XP)
62장 수동 디컴파일링과 Z3 SMT 솔버
63장 동글
64장 QR9: 아마추어 암호화 알고리즘에 기반을 둔 루빅스 큐브
65장 SAP
66장 오라클 RDBMS
67장 손으로 작성한 어셈블리 코드
68장 데모

7부 비공개 파일 포맷 리버싱 예
69장 밀레니엄 게임 저장 파일
70장 오라클 RDBMS: .SYM 파일
71장 오라클 RDBMS: .MSB 파일

8부 기타 사항
72장 npad
73장 실행 파일 패치
74장 컴파일러 인트린직
75장 컴파일러 이상 동작
76장 OpenMP
77장 아이태니엄
78장 8086 메모리 모델
79장 기본 블록 재배치

9부 추천 책과 블로그
80장 추천 책
81장 추천 블로그
82장 기타

10부 연습문제
83장 1단계 연습문제
84장 2단계 연습문제
85장 3단계 연습문제
86장 크랙미/키젠미
87장 질문

부록 A x86
부록 B ARM
부록 C GCC 라이브러리 함수
부록 D MSVC 라이브러리 함수
부록 E 치트시트
부록 F 연습문제 풀이
부록 G 약어집
부록 H 용어 정리
부록 I 참고문헌

저자소개

저자 데니스 유리체프 (Dennis Yurichev)는 우크라이나 출신의 숙련된 리버스 엔지니어이자 프로그래머로, 오라클 RDBMS 보안 연구가로 알려져 있다. 현재는 VMware에 일부가 된 벤처 기업 블루레인(Bluelane)에서 보안 연구가로 일한 바 있다. 저자의 사이트는 http://yurichev.com/이다.

도서소개

[실전 연습으로 완성하는 리버싱]은 리버싱 공부를 시작하는 초보자뿐만 아니라 다양한 플랫폼으로 자신의 리버싱 능력을 확장하고자 하는 중급 이상 개발자에게 유용한 정보를 제공한다. 책에서는 윈도우, 리눅스, 맥, 모바일 플랫폼 등 다양한 운영체제에 따른 소프트웨어 리버싱, 리버싱을 할 때 꼭 알고 있어야 할 코드 패턴 익히기, 여러가지 정보를 활용해 코드의 주요 부분을 찾아내는 방법, 리버싱 작업의 생산성을 높일 수 있는 운영체제 특기 사항, 리버싱에 유용한 도구 소개, 재미있는 예제부터 대규모 소프트웨어 리버싱까지 다양한 실전 연습, 비공개 파일 포맷을 리버싱하고 분석하는 방법, 리버싱 작업 시 알아두면 좋을 광범위한 내용 설명 등을 다루고 있다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.