HOME > Detail View

Detail View

(실전 연습으로 완성하는) 리버싱 : x86/x64 윈도우, 리눅스부터 모바일 ARM iOS까지 (Loan 19 times)

Material type
단행본
Personal Author
Yurichev, Dennis 민병호, 역
Title Statement
(실전 연습으로 완성하는) 리버싱 : x86/x64 윈도우, 리눅스부터 모바일 ARM iOS까지 / 데니스 유리체프 지음 ; 민병호 옮김
Publication, Distribution, etc
의왕 :   에이콘,   2015  
Physical Medium
1145 p. : 삽화 ; 25 cm
Series Statement
에이콘 해킹ㆍ보안 시리즈 = Hacking security series
Varied Title
Reverse engineering for beginners
ISBN
9788960776647 9788960771048 (Set)
General Note
부록: A. x86, B. ARM, C. GCC 라이브러리 함수 외  
Bibliography, Etc. Note
참고문헌(p. 1121-1124)과 색인수록
Subject Added Entry-Topical Term
Reverse engineering Computer security Disassemblers (Computer programs)
000 00000cam c2200205 c 4500
001 000045824217
005 20150224133409
007 ta
008 150223s2015 ggka b 001c kor
020 ▼a 9788960776647 ▼g 94000
020 1 ▼a 9788960771048 (Set)
035 ▼a (KERIS)BIB000013686138
040 ▼a 244026 ▼c 244026 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.8 ▼2 23
085 ▼a 005.8 ▼2 DDCK
090 ▼a 005.8 ▼b 2015z1
100 1 ▼a Yurichev, Dennis ▼0 AUTH(211009)118865
245 2 0 ▼a (실전 연습으로 완성하는) 리버싱 : ▼b x86/x64 윈도우, 리눅스부터 모바일 ARM iOS까지 / ▼d 데니스 유리체프 지음 ; ▼e 민병호 옮김
246 1 9 ▼a Reverse engineering for beginners
260 ▼a 의왕 : ▼b 에이콘, ▼c 2015
300 ▼a 1145 p. : ▼b 삽화 ; ▼c 25 cm
440 0 0 ▼a 에이콘 해킹ㆍ보안 시리즈 = ▼x Hacking security series
500 ▼a 부록: A. x86, B. ARM, C. GCC 라이브러리 함수 외
504 ▼a 참고문헌(p. 1121-1124)과 색인수록
650 0 ▼a Reverse engineering
650 0 ▼a Computer security
650 0 ▼a Disassemblers (Computer programs)
700 1 ▼a 민병호, ▼e
900 1 0 ▼a 유리체프, 데니스, ▼e
945 ▼a KLPA

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.8 2015z1 Accession No. 111731353 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2015z1 Accession No. 121232254 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.8 2015z1 Accession No. 111731353 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2015z1 Accession No. 121232254 Availability Available Due Date Make a Reservation Service B M

Contents information

Book Introduction

에이콘 해킹.보안 시리즈. 리버싱 공부를 시작하는 초보자뿐만 아니라 다양한 플랫폼으로 자신의 리버싱 능력을 확장하고자 하는 중급 이상 개발자에게도 더할 나위 없이 좋다. 풍부한 예제와 흥미로운 실전 연습문제를 해결하다 보면 x86 윈도우, 리눅스부터 64비트 모바일 ARM iOS 리버싱까지 섭렵한 자신을 발견할 수 있다.

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

★ 요약 ★

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

★ 이 책에서 다루는 내용 ★

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

★ 이 책의 대상 독자 ★

직접적인 대상 독자는 악성코드 분석과 취약점 분석, 버그 헌팅 등을 공부하고자 하는 사람이다. 해당 분야의 전문가라 하더라도 다양한 플랫폼으로 자신의 능력을 확장하고자 하는 사람이라면 이 책에서 많은 도움을 받을 수 있다. 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 윈도우 리버싱을 다룬 기존 서적과 달리 다양한 아키텍처와 플랫폼을 다뤘다는 점이다. 단순히 여러 아키텍처를 순차적으로 설명하는 방식이 아니라, 한 프로그램을 여러 아키텍처용으로 컴파일한 후 결과를 비교 설명하기 때문에 윈도우를 비롯해 리눅스와 맥, 모바일 플랫폼용 소프트웨어까지 리버싱해야 하는 독자에게 최고의 선물이 될 수 있다. 특히 윈도우 리버싱에는 익숙하지만 다른 아키텍처는 낯선 독자들은 이 책에서 다른 아키텍처의 리버싱을 정복하는 지름길을 찾을 수 있을 것이다.

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

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


Information Provided By: : Aladin

Author Introduction

데니스 유리체프(지은이)

우크라이나 출신의 숙련된 리버스 엔지니어이자 프로그래머로, 오라클 RDBMS 보안 연구가로 알려져 있다. VMware에 일부가 된 벤처 기업 블루레인(Bluelane)에서 보안 연구가로 일한 바 있다.

민병호(옮긴이)

서울대학교 컴퓨터공학부에서 학사와 석사학위를 마치고 정보 보안 연구가로 활동하고 있다. 10여 권의 IT와 보안 전문서를 번역했다.

Information Provided By: : Aladin

Table of Contents

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 참고문헌

New Arrivals Books in Related Fields

Ramamurthy, Bina (2021)
윤관식 (2020)