000 | 01057camcc2200337 c 4500 | |
001 | 000045814006 | |
005 | 20141028171742 | |
007 | ta | |
008 | 131216s2014 ggka 001c kor | |
020 | ▼a 9788960775039 ▼g 94000 | |
020 | 1 | ▼a 9788960771048 (Set) |
035 | ▼a (KERIS)BIB000013355721 | |
040 | ▼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 2014z7 | |
100 | 1 | ▼a Kaspersky, Kris |
245 | 1 0 | ▼a 해킹의 꽃 디스어셈블링 : ▼b 보완 분석에 유용한 리버스 엔지니어링 기술 / ▼d 크리스 카스퍼스키 지음 ; ▼e 서준석 옮김 |
246 | 1 9 | ▼a Hacker disassembling uncovered ▼g (2nd ed.) |
260 | ▼a 의왕 : ▼b 에이콘, ▼c 2014 | |
300 | ▼a 709 p. : ▼b 삽화 ; ▼c 25 cm | |
440 | 0 0 | ▼a 에이콘 해킹ㆍ보안 시리즈 = ▼x Hacking security series ; ▼v 47 |
500 | ▼a 색인수록 | |
650 | 0 | ▼a Computer security |
650 | 0 | ▼a Computer programming |
650 | 0 | ▼a Debugging in computer science |
700 | 1 | ▼a 서준석, ▼e 역 |
900 | 1 0 | ▼a 카스퍼스키, 크리스, ▼e 저 |
945 | ▼a KLPA |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Main Library/Monographs(3F)/ | Call Number 005.8 2014z7 | Accession No. 111788004 | Availability Available | Due Date | Make a Reservation | Service |
No. 2 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.8 2014z7 | Accession No. 121231140 | Availability Available | Due Date | Make a Reservation | Service |
No. 3 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.8 2014z7 | Accession No. 121248857 | 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 2014z7 | Accession No. 111788004 | Availability Available | Due Date | Make a Reservation | Service |
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 2014z7 | Accession No. 121231140 | Availability Available | Due Date | Make a Reservation | Service |
No. 2 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.8 2014z7 | Accession No. 121248857 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
에이콘 해킹 보안 시리즈 47권. 이 책은 고급 해커의 필수 능력인 디스어셈블링 기법을 집중적으로 다룬다. 분석에 필요한 기본 도구와 어셈블리어 분석을 시작으로 각종 보안 메커니즘을 우회할 수 있는 방법을 설명한다.
1부 '해킹 툴의 소개', 2부 '기본 해킹 기술', 3부 '고급 디스어셈블링 기법', 4부 '실제 코드 연구'의 네 부분으로 구성되어 있으며, 디버깅, 디스어셈블링에 대한 기본 지식부터 커널 분석, 고급 패치 기술 등 분석 과정에서 마주칠 수 있는 깊이 있는 주제들을 다양한 관점과 예제를 통해 학습할 수 있는 훌륭한 분석 길잡이가 되어 줄 것이다.
★ 요약 ★
이 책은 고급 해커의 필수 능력인 디스어셈블링 기법을 집중적으로 다룬다. 분석에 필요한 기본 도구와 어셈블리어 분석을 시작으로 각종 보안 메커니즘을 우회할 수 있는 방법을 설명한다. 디버깅, 디스어셈블링에 대한 기본 지식부터 커널 분석, 고급 패치 기술 등 분석 과정에서 마주칠 수 있는 깊이 있는 주제들을 다양한 관점과 예제를 통해 학습할 수 있는 훌륭한 분석 길잡이가 되어 줄 것이다.
★ 이 책에서 다루는 내용 ★
디스어셈블이 필요한 상황, 특정 언어 구조체를 분석하기 위한 시작점, 보호 메커니즘 개발자가 숨겨 놓은 트랩에 빠지지 않고 수백 메가에 육박하는 코드 밀림에서 길을 잃지 않는 방법을 알려주는 책이다. 특히 이 개정2판에서는 실제 디스어셈블링 기법에 관련된 내용이 추가됐다. 특히 메모리 덤프 분석, 합법적인 소프트웨어 보호 메커니즘, 악성 프로그램 관련 내용이 새로운 단원으로 추가됐다. 또한 관련 예제와 원리들은 최신 동향에 맞춰 수정했다. 안티디버깅 기법 우회, 패킹, 암호화, 다형성, 간단한 난독화 코드 극복과 관련된 내용에 주안점을 두고 작성했다.
★ 이 책의 구성 ★
1부 '해킹 툴의 소개', 2부 '기본 해킹 기술', 3부 '고급 디스어셈블링 기법', 4부 '실제 코드 연구'의 네 부분으로 구성되어 있다.
이 책은 다음과 같은 단원들로 구성된다.
■ 1장 '해킹 툴 입문'에서는 디버거, 디스어셈블러, 디컴파일러, 헥스 에디터, 언패커, 덤퍼 등의 대표적인 윈도우 해킹 툴을 개략적으로 다룬다. 또한 해킹 세계로 뛰어드는 데 필요한 최소한의 지식을 습득하기 위한 필독 도서들을 소개한다.
■ 2장 '유닉스용 해킹 툴'에서는 유닉스와 리눅스 환경에서 사용할 수 있는 해킹 툴을 소개한다.
■ 3장 '디버거 에뮬레이션과 에뮬레이터'에서는 유명하고 흥미로운 주제인 디버거 에뮬레이팅과 에뮬레이터 관련 내용을 다룬다. 코드 분석가들은 에뮬레이팅 기법을 활용해 거의 무한대의 가능성을 확보할 수 있다. 유명한 에뮬레이터와 애플리케이션 영역에 대한 설명뿐만 아니라, 현존하는 에뮬레이터의 비교 분석, 관련 분야의 최신 기술을 소개한다.
■ 4장 '어셈블러 소개'에서는 어셈블러의 개괄적인 내용과 함께 각 언어의 장단점을 다룬다. 어셈블리 언어를 능숙하게 다루지 못하면 진정한 해커라고 볼 수 없기 때문에 4장의 내용은 매우 중요하다고 볼 수 있다. 고급 프로그래밍 언어 지식만으로는 그 어떤 것도 디스어셈블할 수 없다. 초보자와 전문 프로그래머 모두의 신중한 접근이 요구되는 어셈블리 변환기를 선택하는 문제도 다룬다.
■ 2부의 첫 번째 단원인 5장 '기본 해킹 기술 익히기'에서는 보호 메커니즘에 대한 간략한 소개와 함께 여러 메커니즘의 강점과 약점, 현존하는 보호 메커니즘들이 공통적으로 갖는 구현상 결함을 다룬다. 또한 합법적인 사용자들의 편의성을 해치지 않으면서 보호 메커니즘을 강화하는 데 도움이 될 만한 보호 메커니즘 개발 권고 내용도 제공한다.
■ 6장 '시작 준비'에서는 해커가 보호 메커니즘을 크랙할 때 사용하는 기본 기법들을 소개한다. 헥스 데이터, API 스파이, 디스어셈블러를 다루는 기본 기법뿐만 아니라 간단한 해킹 예제도 제공한다.
■ 7장 '애플리케이션 디버깅 익히기'에서는 애플리케이션 디버깅을 소개한다. 이 책이 디스어셈블링에 초점이 맞춰져 있긴 하지만, 때로는 전체 프로그램의 디스어셈블 리스트를 분석하는 것이 비효율적인 경우가 있다. 디버거는 가장 인기 있는 해킹 도구이며, 종종 디스어셈블러와 함께 사용된다. 7장에서는 디버거를 사용해 효율적으로 보호 메커니즘 코드를 찾아내는 기법의 설명과 예제를 제공한다.
■ 8장 '유닉스와 리눅스 환경에서의 디버깅 특성'에서는 내용상 7장과 이어지는 부분이라고 할 수 있다. 여기서는 유닉스와 리눅스 환경에서 부딪힐 수 있는 특정 디버깅 기능을 다룬다. 유닉스 세계에서 가장 강력한 디버거로 꼽히는 GDB를 효율적으로 사용하는 방법도 설명한다. 특히 심볼 정보 없이 바이너리 파일을 디버깅하는 방법에 초점이 맞춰져 있다.
■ 9장 'Linice로 수행하는 커널 디버깅의 기초'에서는 보호된 애플리케이션 해킹에 최적화된 디버거인 Linice 예제를 통해 커널 디버깅 관련 주제를 다룬다.
■ 10장 '고급 디버깅 주제'에서는 2부의 마지막 단원으로, 고급 디버깅 주제와 상급 난이도의 코드 분석에 필요한 내용을 다룬다. 구체적으로 10장에서는 소프트아이스(SoftICE)를 로거로 사용하거나, 디버거와 디스어셈블러 조합을 사용해 효율적으로 브레이크 포인트를 다루는 기법과 큰 크기의 프로그램에서 보호 메커니즘 코드를 재빨리 찾아내는 기법 등 좀 더 효율적인 해킹을 수행하기 위한 다양한 트릭을 학습할 수 있는 계기를 제공한다.
■ 11장 '32비트 PE 파일 디스어셈블링'에서는 32비트 PE 파일을 디스어셈블링하는 방법을 중점적으로 다룬다. PE 파일 구조와 해당 형식의 파일에 외부 코드를 삽입하는 다양한 기법도 다룬다. 대부분의 웜, 바이러스, 셸코드와 보호 메커니즘이 코드 삽입 기법을 사용하기 때문에 이 책의 뒷부분을 이해하려면 11장의 내용을 반드시 숙지해야 한다.
■ 12장 '리눅스와 BSD에서 ELF 파일 디스어셈블링'에서는 ELF 파일에 외부 코드를 삽입하는 기법과 실제 디스어셈블링 예제를 포함해 ELF 파일을 디스어셈블링할 때 필요한 여러 이슈를 소개한다.
■ 13장 'x86-64 아키텍처에서 수행하는 디스어셈블링'에서는 AMD 64 아키텍처상에서 64비트 실행 파일을 디스어셈블링하는 방법과 관련된 내용을 다룬다.
■ 14장 '리눅스 커널 디스어셈블링과 해킹'에서는 운영체제 커널 디스어셈블링 기법을 설명하며, 리눅스 커널에 초점을 맞췄다. 커널을 분석하는 기법과 함께 간단한 커널 해킹 예제를 제공한다.
■ 15장 '고급 패칭 기법'에서는 온라인 패칭과 스텔스 기법의 비밀을 포함한 고급 패칭 기법을 다룬다. 윈도우 NT/2000/XP 커널 수정 예제를 통해 패칭 기법을 설명한다. 또한 온라인 패칭에 대항하는 커널 보호 메커니즘을 제거하기 위한 문서화되거나 문서화되지 않은 기능과 함수를 사용하는 방법도 설명한다. BSOD를 극복하기 위한 소프트아이스 사용 방법을 포함해 정교하지 못한 커널 패칭으로 인한 부작용을 극복하는 방법도 설명한다.
■ 16장 '기타 형식의 파일 디스어셈블링'은 3부의 마지막 단원으로, 다양한 형식의 파일을 디스어셈블링하는 방법을 다룬다. 32비트와 64비트 PE 파일, ELF 파일 디스어셈블링 관련 내용을 다뤘던 이전 단원들과 달리 16장에서는 PDF 파일 예제를 통해 다른 형식의 파일을 디스어셈블하는 기법을 설명한다.
■ 17장 '윈도우에서의 숨바꼭질'은 윈도우 환경에서 안티디버깅 기법과 스텔스 기법을 활용하는 방법을 다룬다. 동일 주제를 유닉스와 리눅스 환경에서 구현하는 방법에 대한 내용은 이 책의 소스코드에서 찾아볼 수 있다.
■ 18장 '패커 극복법'에서는 윈도우 환경에서 패킹됐거나 보호된 프로그램을 조사하는 방법을 다룬다. 패킹이 적용된 형태로 배포되는 프로그램의 수는 증가 추세에 있다. 패커의 주목표는 코드 분석을 어렵게 만드는 것이다. 이러한 일환으로 패커는 프로텍터 형태로 빠르게 진화한다. 해커와 합법적인 사용자에게 같은 무기가 사용된다. 웜, 바이러스, 트로이 목마는 안티바이러스 프로그램으로부터 자신의 존재를 숨기기 위해 패커와 프로텍터를 사용한다.
■ 19장 '난독화 극복법'에서는 코드 난독화를 극복하는 방법을 다룬다. 코드 난독화는 소프트웨어 코드 분석을 복잡하게 만드는 일련의 기법과 방법을 총칭한다. 아직까지 해커가 만든 이 무기에 대응할 수 있는 효과적인 기법은 소개되지 않았다. 하지만 이런 기법을 구현하려는 시도는 여러 방면에서 이뤄지고 있다.
■ 20장 '리눅스와 BSD에서의 패커 극복법'에서는 유닉스와 리눅스 환경에서 동작하는 패커, 프로텍터, 난독화 수행기를 극복하는 방법을 다룬다. 아직까지 이런 유닉스 기반 보호 메커니즘은 해커의 기술 연마를 위해 사용되는 크랙미 예제 형태로만 존재한다. 대부분 유닉스 프로그램이 소스코드 형태로 배포되는 오픈소스 프로젝트인 것이 그 이유로 손꼽힌다. 하지만 상용 유닉스 프로그램은 점차 증가하는 추세에 있다. 그러므로 해커는 이런 강력한 적에 대항할 수 있는 준비를 해야 한다.
■ 21장 '악성코드 디버깅과 디스어셈블링'에서는 웜, 바이러스, 악성코드 감시, 검출, 디스어셈블링 관련 주제를 다룬다. 안티바이러스 소프트웨어(모든 업데이트가 적용된 제품이라 할지라도)가 항상 악성코드를 탐지하지 못하기 때문에 이런 주제를 이해하는 것은 매우 중요하다. 숙련된 해커는 분석 대상이 어떤 내용을 담고 있더라도 자신의 경험과 강력한 무기인 디버거(보통 소프트아이스와 같은 도구를 사용)와 기타 도구를 사용해 악성 코드의 정체를 찾아낼 수 있다.
Information Provided By: :

Author Introduction
크리스 카스퍼스키(지은이)
기술 서적 저자로서, Hacker Uncovered 시리즈 도서들과, <Code Optimization: Effective Memory Usage(코드 최적화: 효율적인 메모리 사용)>, <CD Cracking Uncovered: Protection Against Unsanctioned CD Copying(알려지지 않은 CD 크래킹: 승인되지 않은 CD 복사를 방지하는 보호 기술)>, <Data Recovery Tips & Solutions: Windows, Linux, and BSD(데이터 복구 팁 & 솔루션: 다양한 관점에서 보는 윈도우)> 등의 저서, 그리고 리눅스, BSD 해킹, 디스어셈블링, 코드 최적화 등과 관련한 다양한 기고문을 발표했다. 주로 컴파일러 개발, 최적화 기술, 보안 메커니즘 연구, 실시간 OS 커널 개발, 소프트웨어 보호 메커니즘, 안티 바이러스 프로그램 개발과 관련된 보안 및 시스템 프로그래밍을 주로 다룬다.
서준석(옮긴이)
대학교에서 컴퓨터 공학을, 대학원에서는 정보보호를 전공했으며, 한국정보보호교육센터, 삼성SDS, 보안 프로젝트에서 다양한 보안 업무와 기술 분석을 담당했다. 현재는 혁신 IT 교육 프로그램인 구공팩토리를 운영하는 ㈜흥미랩 대표를 맡고 있으며, 초등학생부터 현업 실무자들까지 다양한 수강생을 대상으로 하는 재미있고 흥미로운 IT 전문 기술 교육 콘텐츠 개발에 힘쓰고 있다. 다양한 분야 중에서도 특히 정보 보안과 인공지능 전문 기술에 관심이 많다. 저서로는 『인공지능, 보안을 배우다』(비제이퍼블릭, 2019)와 공저한 『NMAP NSE를 활용한 보안 취약점 진단』(에이콘, 2013)이 있으며, 번역서로는 『Hacking Exposed 7 한국어판』(에이콘, 2014), 『해킹의 꽃 디스어셈블링 Hacker Disassembling Uncovered』(에이콘, 2013)가 있다.

Table of Contents
1부 해킹 툴의 소개 1장 해킹 툴 입문 ___디버거 ___디스어셈블러 ___디컴파일러 ___헥스 편집기 ___언패커 ___덤퍼 ___리소스 편집기 ___스파이 ___감시 프로그램 ___수정 프로그램 ___보호 CD 복사기 2장 유닉스용 해킹 툴 ___디버거 ___디스어셈블러 ___스파이 ___헥스 편집기 ___덤퍼 ___자동화된 보호 툴 3장 디버거 에뮬레이션과 에뮬레이터 ___에뮬레이터 소개 ___역사적 개요 ___대표적인 에뮬레이터 ___에뮬레이터 선택 4장 어셈블러 소개 ___어셈블리어의 철학 ___C 예제로 어셈블리 개념 설명 ___작업공간으로서 어셈블리 삽입 ___사용 가능한 툴 ___어셈블리 번역기의 개요와 비교 2부 기본 해킹 기술 5장 기본 해킹 기술 익히기 ___비밀 키 유형에 따른 보호 메커니즘 분류 ___보호 강도 ___상용 솔루션의 단점 ___사용 기술의 구현 에러 ___심각한 결과를 야기하는 사소한 오류의 정리 6장 시작 준비 ___보호 기술 제작과 크랙 ___디스어셈블러 익히기 ___실전 크랙 예제 ___정리 7장 애플리케이션 디버깅 익히기 ___디버깅 소개 ___디스어셈블러와 디버거를 같이 사용 ___API 함수에 브레이크 포인트 설정 ___메시지에 브레이크 포인트 설정 ___데이터에 브레이크 포인트 설정 ___스택 추적 ___DLL 디버깅 ___정리 8장 유닉스와 리눅스 환경에서의 디버깅 특성 ___GDB 기반의 Ptrace ___GDB에서 바이너리 파일 디버깅 9장 Linice로 수행하는 커널 디버깅의 기초 ___시스템 요구 사항 ___Linice 컴파일과 설정 ___시스템 부팅과 디버거 실행 ___Linice로 작업할 때 지켜야 할 기본 원칙 ___정리 10장 고급 디버깅 주제 ___소프트아이스를 로그 수집기로 사용 ___무작위 브레이크 포인트로 해킹 트릭 사용 ___범위 설정을 통한 크래킹 ___정리 3부 고급 디스어셈블링 기술 11장 32비트 PE 파일 디스어셈블링 ___다양한 실행 환경에서 PE 파일 구조의 특징 ___일반적인 개념과 PE 파일의 요구 사항 ___PE 파일 구조 ___PE 파일에 코드를 삽입하거나 제거하는 기술 ___정리 12장 리눅스와 BSD에서 ELF 파일 디스어셈블링 ___필요한 도구 ___ELF 파일 구조 ___ELF 파일에 외부 코드 삽입 ___리눅스에서 간단한 크랙미 프로그램을 디스어셈블링 ___정리 13장 x86-64 아키텍처에서 수행하는 디스어셈블링 ___소개 ___필요한 도구 ___x86-64 아키텍처의 개요 ___64비트 모드로 전환 ___x86-64 환경에서 만드는 ‘Hello, World’ 프로그램 ___정리 14장 리눅스 커널 디스어셈블링과 해킹 ___디스어셈블링 리눅스 커널 ___커널 해킹의 비밀 15장 고급 패칭 기법 ___온라인 패칭의 비밀과 트릭 ___클라이언트 프로그램을 크래킹하는 잘 알려지지 않은 방법 ___윈도우 NT/2000/XP 커널 핵 ___BSOD 이후의 세계가 존재하는가? ___참고 사이트 ___정리 16장 기타 형식의 파일 디스어셈블링 ___PDF 파일 디스어셈블링 ___정리 4부 실제 코드 연구 17장 윈도우에서의 숨바꼭질 ___윈도우 환경을 위한 안티디버깅 기법 ___윈도우 환경에서 사용되는 스텔스 기법 ___정리 18장 패커 극복법 ___예비 분석 ___언패킹과 대체 방안 ___언패킹 알고리즘 ___오리지널 진입점 검색 ___보호된 애플리케이션을 덤프 ___정리 19장 난독화 극복법 ___난독화 도구의 작동 원리 ___난독화된 프로그램을 크랙하는 방법 ___블랙박스 접근법 ___가상머신 지하 감옥 ___정리 20장 리눅스와 BSD에서의 패커 극복법 ___패커가 성능에 미치는 영향 ___UPX ___Burneye ___Shiva ___패커 비교 ___정리 21장 악성코드 디버깅과 디스어셈블링 ___디버거를 활용한 방첩 활동 ___공격 코드 감사와 디스어셈블링 ___참고 자료 ___정리 찾아보기