HOME > Detail View

Detail View

리버스 엔지니어링 바이블 : 코드 재창조의 미학 / 재출간판 (Loan 28 times)

Material type
단행본
Personal Author
강병탁
Title Statement
리버스 엔지니어링 바이블 = Reverse engineering bible : 코드 재창조의 미학 / 강병탁 지음
판사항
재출간판
Publication, Distribution, etc
파주 :   위키북스,   2014   (2018 2쇄)  
Physical Medium
xxxvii, 566 p. : 삽화 ; 24 cm
Series Statement
위키북스 해킹 & 보안 시리즈 ;005
ISBN
9788998139728
General Note
감수자: 김휘강  
Bibliography, Etc. Note
참고문헌(p. [560-561])과 색인수록
000 00000cam c2200205 c 4500
001 000045911389
005 20190902173554
007 ta
008 170731s2014 ggka b 001c kor
020 ▼a 9788998139728 ▼g 93000
035 ▼a (KERIS)BIB000013628760
040 ▼a 243001 ▼c 243001 ▼d 243001 ▼d 243001 ▼d 243001 ▼d 211009
082 0 4 ▼a 005.8 ▼2 23
085 ▼a 005.8 ▼2 DDCK
090 ▼a 005.8 ▼b 2014z18
100 1 ▼a 강병탁 ▼0 AUTH(211009)99506
245 1 0 ▼a 리버스 엔지니어링 바이블 = ▼x Reverse engineering bible : ▼b 코드 재창조의 미학 / ▼d 강병탁 지음
250 ▼a 재출간판
260 ▼a 파주 : ▼b 위키북스, ▼c 2014 ▼g (2018 2쇄)
300 ▼a xxxvii, 566 p. : ▼b 삽화 ; ▼c 24 cm
440 0 0 ▼a 위키북스 해킹 & 보안 시리즈 ; ▼v 005
500 ▼a 감수자: 김휘강
504 ▼a 참고문헌(p. [560-561])과 색인수록
945 ▼a KLPA
949 ▼a 위키북스 해킹 and 보안 시리즈 ; ▼v 005

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.8 2014z18 Accession No. 111776673 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z18 Accession No. 121245660 Availability Available Due Date Make a Reservation Service B M
No. 3 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z18 Accession No. 121250134 Availability Available Due Date Make a Reservation Service B M
No. 4 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.8 2014z18 Accession No. 151350176 Availability Available Due Date Make a Reservation Service
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.8 2014z18 Accession No. 111776673 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 2014z18 Accession No. 121245660 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.8 2014z18 Accession No. 121250134 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 Sejong Academic Information Center/Science & Technology/ Call Number 005.8 2014z18 Accession No. 151350176 Availability Available Due Date Make a Reservation Service

Contents information

Book Introduction

위키북스 해킹 & 보안 시리즈 5권. C/C++ 코드가 어셈블리 코드로 어떻게 변해가는지에 대한 기초적인 부분에서부터, 실제 악성코드 분석, 보안 프로그램 공격 방법, 리버싱 보조 플러그인 개발 방법, 그리고 소스코드가 없는 상태에서 프로그램을 커스터마이징하는 방법까지, 리버스 엔지니어링에 관련된 모든 사항을 다룬다.

이 책은 리버스 엔지니어링을 처음 접하거나 어느 정도 수준을 높이고자 하는 독자를 대상으로 한다. 특히 친근한 설명과 가벼운 대화체를 사용했으므로 접근하는 데 벽이 높지 않으리라 생각한다. 따라서 리버스 엔지니어링이 너무 어려워서 중도에 포기했던 독자라면 많은 도움이 될 것이다.

리버스 엔지니어링만을 위한 바이블, 리버싱의 모든 것이 이 책 한 권에 녹아 있다!

리버스 엔지니어링은 소위 해커들의 전유물처럼 취급돼 왔다. 기술이 가지고 있는 위험성 때문에 수면 위로 올라오지 못하고 '어둠의 예술'이라고 불리며 그간 많은 사람들에게 정체가 가려져 있었다. 그래서 역사가 오래됐음에도 뚜렷한 전문서나 바이블이 존재하지 않으며, 인가된 해커들만 정보를 공유할 수 있거나 리버싱 업무를 수행하던 소수의 리서처에게 발품을 팔아 하나씩 배워야만 했다.

『리버스 엔지니어링 바이블: 코드 재창조의 미학』은 이 같이 해커들이 주고받던 어둠의 지식을 수면 위로 끌어올리는 역할을 한다. 많은 사람들이 리버스 엔지니어링에 대해 깊이 있는 지식을 만나지 못하고 마약을 밀매하듯 은밀하게 기법을 주고받았지만, 이제 이 책을 통해 그 모든 목마름에 대한 해답을 찾을 수 있다. C/C++ 코드가 어셈블리 코드로 어떻게 변해가는지에 대한 기초적인 부분에서부터, 실제 악성코드 분석, 보안 프로그램 공격 방법, 리버싱 보조 플러그인 개발 방법, 그리고 소스코드가 없는 상태에서 프로그램을 커스터마이징하는 방법까지, 리버스 엔지니어링에 관련된 모든 사항을 다룬다.

★ 이 책에서 다루는 내용 ★

■ C/C++ 코드를 리버스 엔지니어링할 때에 접근 방법에 대한 노하우
■ MFC나 Win32 API, 런타임 라이브러리 등 실제 모듈에 사용되는 코드 해석 방법
■ 리버스 엔지니어링을 방해하기 위한 안티 리버싱 기술, 그리고 그것을 또 우회하는 방법
■ 백신이나 보안 솔루션 등을 공격하는 기술, 바이러스 감지 회피의 원리
■ 시리얼 연산 루틴을 리버스 엔지니어링 할 때의 테크닉, 크래킹 기법
■ 소스가 없는 프로그램을 리버스 엔지니어링으로 커스터마이징하는 방법
■ 키보드 보안 솔루션이나 실시간 감지 기술을 우회하는 과정
■ 국내에서는 한 번도 다뤄지지 않는 Olly Debugger의 플러그인 개발 방법

<출판사 리뷰>

이 책은 리버스 엔지니어링을 처음 접하거나 어느 정도 수준을 높이고자 하는 독자를 대상으로 한다. 특히 친근한 설명과 가벼운 대화체를 사용했으므로 접근하는 데 벽이 높지 않으리라 생각한다. 따라서 리버스 엔지니어링이 너무 어려워서 중도에 포기했던 독자라면 많은 도움이 될 것이다.

이 책은 총 7부로 구성돼 있으며, 각 부별 주요 내용은 아래와 같다.

▣ [1부] 리버스 엔지니어링 기본

어셈블리, C, C++, DLL 등의 매우 기본적인 코드의 생성 흐름과 규칙을 정리한 내용이다. 리버스 엔지니어링도 결국 정해진 문법 안에서 기본적인 규칙을 따르면 풀어낼 수 있는 것에 불과하기 때문에 그러한 규범을 알아보자는 이야기라고 보면 될 것 같다. 차를 달이거나 마실 때의 방식이나 규칙을 말하는 다도(茶道)라는 것이 있다. 한 잔에 불과한 맹물을 마실 때도 이 같은 엄격한 규율이 있듯이 리버스 엔지니어링을 할 때도 기본적으로 알아둬야 할 규칙이 있다는 것을 이해하기 위한 내용이다.

▣ [2부] 리버스 엔지니어링 중급

PE Header는 리버스 엔지니어링을 공부하는 사람들이 가장 고통스러워 하기도 하면서 공부하기도 싫어했지만 어쩔 수 없이 결국에는 익혀야만 되는 필수 요소 중 하나인데, 그런 선배 경험자들의 고충을 밑바탕으로 이론에 불과한 내용을 철저히 배제하고 현업과 실무에 맞게 재각색해서 설명했다. "2장 흔히 사용하는 패턴"에서는 1부 리버싱 기본에서 다루지 못한 코드가 생성되는 과정과 계속 반복해서 나오는 패턴에 대해 분석하며 어셈블리 언어의 감을 익히기 위한 내용을 준비했다. 그리고 마지막으로 MFC 리버싱을 통해 애플리케이션 분석의 집중도를 높일 수 있게 여러 가지 기법 소개를 준비했다.

▣ [3부] 연산 루틴 리버싱

F-Secure 백신사의 리버스 엔지니어링 대회를 통해 연산 루틴을 분석하는 과정을 설명하는데, 흔히 볼 수 있는 점프 패치를 중점적으로 설명하기보다는 왜 이 루틴을 분석해야 하고 어떤 접근 방식을 써야 하는지 등, 생각하는 리버스 엔지니어링에 초점을 맞춰 단순한 키 빼내기 해설이 되지 않도록 노력했다.

▣ [4부] 안티 리버싱

안티 리버싱은 리버스 엔지니어링을 막는 기술, 이른바 밤송이에 돋은 가시 같은 역할이다. 이것을 제거해야만 리버스 엔지니어링을 순탄하게 진행할 수 있고 결국에 알밤을 빼먹을 수 있는 결과까지 도달하는 것이다. 안티 리버싱 기술은 계속해서 발전을 거듭해, 안티 리버싱을 분석, 격파하는 그 자체가 하나의 학문으로 될 만큼 성장해오고 있다. 인터넷에 흔히 등장하는 안티 디버깅 코드는 실제로 가동되지 않는 것도 많고 예제 코드도 충분하지 않아 익히기에 어려운 감이 있지만 이 4부에서는 모든 기법을 100% 실제 코드로 제작했으며 각 밤송이 가시 기술에 대한 강력함의 정도, 우회 방법 등의 한계점, 그리고 보완 방법 등에 대해 다각도로 설명한다.

▣ [5부] OllyDBG 플러그인

OllyDBG 플러그인은 리버스 엔지니어링을 좀 더 쉽게 하기 위해 만든 보조 도구라고 볼 수 있다. OllyDBG에서는 누구나 플러그인을 제작할 수 있게 훌륭한 인터페이스를 제공하고 있으므로 SDK의 사용법과 자신만의 아이디어가 결합하면 리버스 엔지니어링을 몇 배 이상 효율적으로 증가시킬 플러그인을 제작할 수 있다.

▣ [6부] 보안 모듈 우회

보안 관계자에게 가장 두려운 것은 방어장치가 없는 상태에서 해킹을 하는 사람이 아니고 존재하는 보안 모듈을 뚫어서 해킹 시도를 하는 이들이다. 그리고 대부분의 취약점은 보안 설계 자체의 실수보다는 어이없는 한두 줄의 취약점 때문에 발생하는 것들이 상당수를 이룬다. 6부에서는 일반적으로 보안 모듈을 우회하는 기법 말고도 굉장히 단순한 한두 가지 취약점을 이용해 보안 모듈이 공격 당하는 여러 가지 사례를 보여준다.

▣ [7부] 한 차원 높은 바이너리 창조

7부에서는 마지막 내용으로, 코드 후킹, 코드 변조, 난독화 등의 내용을 다루며 중급 이상의 리버스 엔지니어링을 목표로 하는 독자를 위해 작성했다. eax는 리턴값, ecx는 카운터라는 등의 시시껄렁하고 반복적인 지식의 답습에서 벗어나 리버싱의 깊이를 좀더 맛볼 수 있게 노력했다. "6부 보안 모듈 우회" 편의 연장이라는 느낌을 살렸기 때문에 6부의 내용을 반드시 숙지한 후에 살펴보길 바란다.

<베타리더>

"한 권의 명저가 탄생했다. 기존의 책과는 차별화된 방식으로 리버스 엔지니어링에 접근하는 이 책은 리버스 엔지니어링의 현대판 바이블이라고 생각한다. 저자의 노고에 무한한 박수를 보낸다."
- 이홍선, 넥슨 코리아 게임보안팀

"실무자로서의 경험과 연구에서 비롯된 리버스 엔지니어링에 관한 다향한 기술, 기법들을 집대성한 주옥같은 학습서다. 쉬운 예제와 친절한 설명으로 이 새로운 세계에 쉽게 적응할 수 있도록 도와주며 구체적인 설명으로 기술에 대한 이해를 높여주고 이에 더해 기존에는 잘 다뤄지지 않았던 부분에 대한 전문적인 노하우를 알려주고 있어 중급 이상의 과정으로 나아가려는 이들이라면 시행착오를 줄이고 시간을 절약하는 데 도움될 것이다."
- 이진석, 넥슨 코리아 게임보안팀

"리버스 엔지니어링을 강병탁 님 특유의 위트 있는 어투로 재미있게 풀어낸 책이다. 그동안 게임보안 일을 하며 많은 책을 봐왔지만 이렇게 군더더기 없이 필요한 것만 설명해주는 책은 처음이다. 이제부터 이 책은 지금까지와는 다른 리버스 엔지니어링 입문서가 될 것이다."
- 김동현, 넥슨 코리아 게임보안팀

"리버스 지니어링의 기초부터 고급기술까지 다루고 있는 책이다. 베타리더를 진행하면서 새롭게 알게 된 부분도 많고, 기초를 다시 다지는 계기가 되었다. 이 책을 읽는 독자들 또한 실력이 두 단계 업그레이드될 것이라 장담하며, 리버스 엔지니어링의 세계를 경험해 보시기 바란다."
- 전동기, 넥슨 코리아 게임보안팀

"강력한 비급이 담겨 있을수록 어려운 내용으로 인해 주화입마에 빠지고 마는 경우가 많다. 하지만 이 책은 그러한 주제를 특유의 위트와 재치로 풀어낸 비급서가 아닐까 생각한다."
- 최종학, 넥슨 코리아 게임보안팀

"아직 많은 부분에서 부족한 내가 이 책을 통해 얻게 된 것, 그것은 저자가 수년간 게임 보안 업계에서 쌓아온 실무 노하우였다. 해커들과 수없이 공방을 치뤄야 하는 나에게 이 책은 전 세계 해커들과 맞짱을 뜰 수 있게 해준 무기였다."
- 김지호, 넥슨 코리아 게임보안팀

처음 시작조차 막막하고 높은 벽처럼 느껴졌던 리버싱 기술에 어떻게 접근해야 하는지, 그 기술의 핵심이 무엇인지 보여주는 지침서라고 생각한다. 처음 리버싱을 공부했을 때 어셈블리 책을 읽다가 좌절했던 경험을 겪어본 한 사람으로서 지식과 실무 경험이 녹아 있는 이 책으로 보안 분야에 입문하기를 감히 추천한다.
- 김창규, 넥슨 아메리카 정보보안팀


Information Provided By: : Aladin

Author Introduction

강병탁(지은이)

현재 에이아이스페라(AI Spera)의 대표이사로 사이버 위협 인텔리전스(CTI) 프로젝트를 진행하고 있으며 고려대학교 정보보호대학원 산학협력중점교수를 역임하고 있다. 이전에는 네오플 인프라기술실 실장으로 시스템/보안/DB/인프라개발 등 인프라 기술을 총괄했으며, 넥슨 아메리카에서는 InfoSec Team 팀장으로 미국 지사의 보안조직을 설립, 보안프로세스구축/침입탐지/컴플라이언스 업무를 해 왔고, 넥슨 코리아에서는 게임보안팀을 설립, 팀장으로 라이브 게임의 보안성 향상과 침해대응 업무를 해 왔다. 월간 마소에서 해킹/보안을 주제로 약 3년간 테크니컬 라이터로 활동했고, 각종 대학교와 기관 등에서 해킹/보안을 주제로 한 정기/특별 강의를 다년간 진행했다. 저서로는 《인프라 보안》 《리버스 엔지니어링 바이블》이 있다.

김휘강(감수)

2018년 현 고려대학교 정보보호대학원(대학원), 사이버국방학과 (학부) 교수 현 카카오 프라이버시정책 자문위원회 현 삼성전자 소프트웨어/보안 부문 자문단 현 KISA ISMS 인증위원회 위원 현 한국정보보호학회 이사 전 엔씨소프트 정보보안실장 전 A3 Secuity 창업자, 대표

Information Provided By: : Aladin

Table of Contents

[01부] 리버스 엔지니어링 기본	

▣ 01장_리버스 엔지니어링만을 위한 어셈블리	

어셈블리의 기본 구조 
어셈블리의 명령 포맷	
레지스터, 복잡한 설명은 그만	
EAX	
EDX	
ECX	
EBX	
ESI, EDI	
외울 필요가 없는 어셈블리 명령어	
- PUSH, POP	
- MOV	
- LEA	
- ADD	
- SUB	
- INT	
- CALL	
- INC, DEC	
- AND, OR, XOR	
- NOP	
- CMP, JMP	
리버스 엔지니어링에 필요한 스택 
함수의 호출	
리턴 주소	

▣ 02장_C 문법과 디스어셈블링	

함수의 기본 구조	
함수의 호출 규약	
- 1) _cdecl 방식	
- 2) 파라미터는 2개	
- 3) 리턴 값이 숫자	
if 문	
반복문	
구조체와 API Call	
결론	

▣ 03장_C++ 클래스와 리버스 엔지니어링	

C++ 분석의 난해함	
클래스 뼈대	
클래스의 수명과 전역변수	
객체의 동적 할당과 해제	
생성자와 소멸자	
캡슐화 분석	
다형성 구조 파악	

▣ 04장_DLL 분석	

DLL의 번지 계산법	
재배치를 고려한 방법	
- 1) push 문	
- 2) 점프문	
번지 고정	
익스포트 함수	
DllAttach/DllDetach 찾기	
패킹된 DLL의 DllMain() 찾기	
DisableThreadLibraryCalls로 찾기	

[02부] 리버스 엔지니어링 중급	

▣ 05장_PE 헤더(PE Header)	

PE에 대한 상식적인 개념	
빌드 과정	
PE 파일 구조	
- IMAGE_DOS_HEADER	
- IMAGE_NT_HEADER	
- IMAGE_FILE_HEADER	
- Machine 
- NumberOfSections	
- TimeDateStamp 
- SizeOfOptionalHeader	
IMAGE_OPTIONAL_HEADER	
- Magic	
- SizeOfCode	
- MajorLinkerVersion, MinorLinkerVersion	
- ImageBase	
- AddressOfEntryPoint	
- BaseOfCode	
- SectionAlignment, FileAlignment;	
- SizeOfImage	
- SizeOfHeaders	
- Subsystem- - - - - - - : 0x2 (Windows GUI)	
- DataDirectory	
IMAGE_SECTION_HEADER	
PE와 API 호출의 원리	
IAT에서 API를 계산하는 방법	
익스포트 테이블 (export table)	
마무리	

▣ 06장_흔히 사용하는 패턴	

조건문의 기본	
심화된 조건문	
반복문	
break가 들어가는 경우	
continue가 들어갈 경우	
return이 생기는 경우	
문자열 컨트롤	
- 1. strcpy	
- 2. strcat	
- 3. strlwr	
정리	

▣ 07장_MFC 리버싱	

리버스 엔지니어링에 필요한 MFC 구조	
MFC로 개발됐는지 여부 확인	
MFC 라이브러리 등록	
MFC 초기화 루틴 찾기	
버튼 핸들러 찾아내기	
헤더 파일 활용	
그 밖의 MFC 관련 리버싱 접근 방법	

[03부] 연산 루틴 리버싱	

▣ 08장_시리얼 추출 방법	

F-Secure Reverse Engineering 대회	
Level 1 문제 풀이	
- 1) 사전 정보 획득 첫 번째 ? 파일 스캐너로 스캔	
- 2) 사전 정보 획득 두 번째 ? API 확인	
- 3) 사전 정보 획득 세 번째 ? 파일의 이미지 베이스 확인	
Level 2 문제 풀이	
문자열 컨트롤	
안티 디버깅 기법	
WinMain보다 먼저 가동되는 코드	

▣ 09장_코드 속이기	

Level 3 문제 풀이	
데이터 속에 숨은 코드	
리버싱으로 방정식 세우기	
바이너리 파싱	
재사용이 어려운 코드 
디스어셈블러 속이기	
정리하며	

[04부] 안티 리버스 엔지니어링	

▣ 10장_교과서적인 안티 디버깅	

프로그램 개발 완료 후 다가올 리버싱의 위험	
리버싱에 대항하는 A씨의 반격, 그 후…	
안티 디버깅이란?	
고전적인 안티 디버깅	
API 로 제공되는 안티 디버깅 기능	
다중 기능을 보유한 맥가이버칼, NtQueryInformationProcess	
Debug Object Handle	
또 핸들을 찾아라, NtQueryObject	
NoDebugInherit	
디버거는 어디에, NtSetInformationThread 
int3을 이용한 디버거 감지	
SetUnhandledExceptionFilter	
0xCC 자체를 탐지하자	
소프트아이스 감지	
PEB를 이용한 방법	
정리	

▣ 11장_한 단계 높은 안티 디버깅	

생각보다 활용도가 높은 프로세스 체크	
버전 체크	
부모 프로세스 체크	
SeDebugPrivilege 권한 체크	
WinDBG 검출	
키보드 입력 봉쇄	
CloseHandle()을 이용한 안티 리버싱	
OutputDebugString이 주는 두 가지 마술	
시간차 공격! 타이머를 이용한 방법	
PREFIX REP을 통한 예외 처리	
API Hook을 이용한 디버깅 감지	
리모트 디버깅 감지	
생각해 볼 과제	

▣ 12장_패커가 사용하는 기술	

패커? 대수롭지 않은 개념	
패킹된 코드의 암호화/복호화	
IAT의 변화	
매뉴얼 언패킹(MUP)	
파일 스캐너	
디버거의 구조	
Self Debugging	
스택 세그먼트 레지스터	
int 0x2d	
덤프 방지	
디버그 레지스터	

▣ 13장_우회 방법	

API Hooking을 통한 우회	
OllyDBG 옵션을 이용한 우회	
플래그 수정으로 우회	

[05부] OllyDBG 플러그인	

▣ 14장_OllyDBG 플러그인 SDK	

최고의 매력 OllyDBG 플러그인	
플러그인 가동 원리	
플러그인 SDK 사용 규약	
초기화 코드	
PreInit - ODBG_Plugindata()	
초기화 루틴 - ODBG_Plugininit()	
메뉴 작성 - ODBG_Pluginmenu()	
메뉴 핸들러 작성 - ODBG_Pluginaction()	
종료 처리	
PDK 활용	
t_dump - 덤프 관련 구조체	
t_memory ? 메모리 관련 구조체	
t_disasm ? 디스어셈블 구조체	
Readmemory	
구조체 종합 예제 - Extra Copy	

▣ 15장_리버싱 보조 플러그인	

IsDebuggerPresent() 무력화	
디버거 떼어내기	
자동 어태치	
단축키 - ODBG_Pluginshortcut()	
OllyAdvance 분석	
Setbreakpoint()와 TLS CallBack 감지	
커맨드라인 실행 바	
디버깅 흔적 청소	
게임 해킹 플러그인 ? Game Invader	
Game Invader의 구현 원리	
메모리 속성 옵션	
암복호화 코드 분석 ? Find Crypt	
FindCrypt의 구현 원리	
남은 과제	

▣ 16장_메모리 스캔 플러그인 개발	

아직 세상에 없는 플러그인을 만들어 보자	
분석 시간을 줄일 수 있다면?	
플러그인 코어 루틴 컨셉	
UI 디자인	
버튼 핸들러 제작	
후킹 탐지 기능	
파일과 메모리의 기준 번지를 정하는 방법	
IAT가 코드 섹션에 포함된 경우	
패킹 체크	
후킹 탐지 스캔 결과	
암복호화 루틴 탐지	
화이트 리스트 처리	
OllyMemScan 평가	

[06부] 보안 모듈 우회	

▣ 17장_바이러스 감지 회피	

백신은 과연 바이러스만 감지하는가	
기본적인 감지 원리	
고전적인 우회 방법	
쓰레기 코드를 통한 우회 방법	
실행조차 되지 않는 코드	
헤더 변조	
문자열 패턴 우회	
바이너리 패킹의 시대	
대체 가능한 어셈블리어	
패커의 특성을 고려한 회피	
섹션 이름 변경 
백신사의 대응 

▣ 18장_백신을 공격하는 악성코드	

백신을 공격하는 바이러스는 어느 정도 존재하는가	
특정 백신 언급 증가	
백신 프로세스 종료	
트레이 속임	
공식적으로 언급된 취약점	
업데이트 우회	
보안업체 비방	
드라이버 공격	
몸체가 없는 공격 코드	
Conficker	
SDT 취약점	
벤치마킹의 중요성	

▣ 19장_실시간 감시 기능 취약점	

바이러스 감지 후 필요한 행위	
파일 시스템 필터 드라이버	
실시간 감시 기능의 구현 원리	
콜백 함수 무력화	
콜백 무력화 대응 방법	
노티파이 카운트 취약점	
화이트리스트 강제 주입	
파일 접근 통제	
ZIP 취약점	
가상 PC 감지	
그외 안티바이러스 우회를 위한 다양한 방법	

▣ 20장_키보드 보안 솔루션 우회	

키보드 취약점이 되는 구간	
키보드 보안의 원리	
폴링 취약점	
IE 의 추가 기능 관리	
가장 피해 사례가 많은 ring3 영역	
핵심 모듈 공격	
언로드 DLL	
ring3에서 키보드 보안을 우회하는 이유	
키보드 보안의 문제점	
가상 키보드 취약점	
인터넷 뱅킹 취약점 ? 메모리 해킹	
키보드 보안이 어려운 이유	
클라이언트에서 완전한 보안은?	

[07부] 한 차원 높은 바이너리 창조	

▣ 21장_코드 후킹	

코드 후킹과 공동경비구역	
번지 계산의 고통	
DLL 인젝션 코드	
CreateRemoteThread	
DLL 인젝션 테스트	
코드 후킹 기본 디자인	
여섯 바이트를 변조하는 이유	
DLL 번지의 강제 고정과 naked 함수	
패킷 버퍼 로깅	
하드코딩에서 탈피하자	
후킹 코드의 확장	
MakeJMP - 후킹 함수의 간결화	
마무리	

▣ 22장_코드 패칭	

동적 접근 방법과 정적 접근 방법	
프로세스 검출 루틴 분석	
점프문 공격	
파일에서 패칭할 때와 메모리에서 패칭할 때	
상수값 패칭	
스택 해킹	
거짓을 리턴	
스레드 공격	
마무리	

▣ 23장_난독화와 더미 코드	

디스어셈블러 개론	
안티 디스어셈블링	
가비지 코드 속에 담긴 진짜 코드	
ASPack이 사용하는 안티 디스어셈블링	
Themida에서 사용하는 안티 디스어셈블링	
ASProtect 의 코드 카피	
Themida의 코드 리다이렉트	
상수 암호화	
API 호출 감추기	
난독화 코드 찾아내어 우회하기	
마무리

New Arrivals Books in Related Fields

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