Top

해킹의 꽃 디스어셈블링 Hacker Disassembling Uncovered [보안 분석에 유용한 리버스 엔지니어링 기술]

  • 원서명Hacker Disassembling Uncovered (2nd Edition) (ISBN 9781931769648)
  • 지은이크리스 카스퍼스키
  • 옮긴이서준석
  • ISBN : 9788960775039
  • 40,000원
  • 2013년 12월 26일 펴냄
  • 페이퍼백 | 720쪽 | 188*250mm
  • 시리즈 : 해킹과 보안

책 소개

이 책은 고급 해커의 필수 능력인 디스어셈블링 기법을 집중적으로 다룬다. 분석에 필요한 기본 도구와 어셈블리어 분석을 시작으로 각종 보안 메커니즘을 우회할 수 있는 방법을 설명한다. 디버깅, 디스어셈블링에 대한 기본 지식부터 커널 분석, 고급 패치 기술 등 분석 과정에서 마주칠 수 있는 깊이 있는 주제들을 다양한 관점과 예제를 통해 학습할 수 있는 훌륭한 분석 길잡이가 되어 줄 것이다.

이 책에서 다루는 내용

디스어셈블이 필요한 상황, 특정 언어 구조체를 분석하기 위한 시작점, 보호 메커니즘 개발자가 숨겨 놓은 트랩에 빠지지 않고 수백 메가에 육박하는 코드 밀림에서 길을 잃지 않는 방법을 알려주는 책이다. 특히 이 개정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장 ‘악성코드 디버깅과 디스어셈블링’에서는 웜, 바이러스, 악성코드 감시, 검출, 디스어셈블링 관련 주제를 다룬다. 안티바이러스 소프트웨어(모든 업데이트가 적용된 제품이라 할지라도)가 항상 악성코드를 탐지하지 못하기 때문에 이런 주제를 이해하는 것은 매우 중요하다. 숙련된 해커는 분석 대상이 어떤 내용을 담고 있더라도 자신의 경험과 강력한 무기인 디버거(보통 소프트아이스와 같은 도구를 사용)와 기타 도구를 사용해 악성 코드의 정체를 찾아낼 수 있다.

저자/역자 소개

저자 서문

나는 어린 시절부터 컴퓨터에 흠뻑 빠져 지내왔다. 특히 리버스 엔지니어링, 보안 메커니즘의 취약점 발견, 자체 보호 시스템 개발 등에 관심이 많다. 컴퓨터의 “깊은 영역에는 무엇이 있을까”라는 의문과 함께 쇠파이프와 망치(비유하자면)를 사용해 무언가를 부셔버리고 싶은 자연스러운 욕망이 집필이라는 새로운 도전으로 이어졌다. 과연 컴퓨터를 부숴서 안을 열어보지 않고 이것이 어떻게 동작하는지 이해할 수 있을까? 우주를 만물을 이해하기 위해 애쓰는 사람을 해커라 부른다면 나 또한 이들과 한 배를 탄 사람이다.

해킹은 지각 있는 존재가 느끼는 자연스러운 욕구 중 하나다. 해킹은 세상 만물의 참된 진실을 이해하기 위한 험난한 길을 지나 파멸을 향해 덤벼드는 여정과 같다. 주위를 둘러보자. 핵물리학자들은 원자를 분리하고, 화학자들은 긴 길이의 분자를 여러 조각으로 쪼개며, 수학자들은 식을 분해한다. 그 누구도 이들을 비난하지 않는다. 하지만 이상하게도 소프트웨어 안을 들여다보고 분해를 시도하는 코드 분석가들은 종종 검열을 받는다. 이들을 규제하는 것이 과연 정당한 행위인가? 일반적인 해킹, 그 중에서 특히 디스어셈블링이 정말 불법적인 행위란 말인가?

해킹은 공공 기물을 파손하는 행위가 아니다. 해킹은 자연스러운 호기심과 세상 만물을 이해하려는 욕구의 결과물이다. 디스어셈블 리스트, 기계어 명령, 소프트아이스 특유의 검은 화면은 초기 MS-DOS 시절을 상기시켜 주는 매력적이고 흥미로운 영역이다. 이 영역은 숨겨진 메커니즘과 보호 코드의 세상 속에 위치한다. 지도상에서는 이 영역을 찾을 수 없다. 이 세계는 출력물의 한 부분, 가장 흥미로운 위치에서 확인하는 기술 매뉴얼, 모니터 앞에서 밤을 꼬박 새는 순간에만 접근이 가능하다.

보호 메커니즘 개발자와 해커는 서로 적이며, 동지다. 해커가 수준 높은 보호 메커니즘을 구축하지 못하는 프로그래머의 무능력함에 기생한다면 반대로 프로그래머 또한 보호 메커니즘 우회 프로그램 제작이 불가능한 사용자들의 무능력함을 공격한다.

해킹과 프로그래밍은 많은 부분에서 공통점이 있다. 수준 높고 신뢰성 있는 보호 메커니즘을 제작하려면 상당 수준의 로우레벨 프로그래밍 기술이 필요하다. 이 밖에도 운영체제, 드라이버 및 관련 도구를 다룰 수 있는 능력, 최신 프로세서 아키텍처에 대한 지식, 특정 컴파일러를 위한 코드 생성 기능, 사용 중인 라이브러리의 ‘생태’에 대한 이해가 선행돼야 한다. 이 정도 프로그래밍 수준에서 볼 때 프로그래밍과 해킹의 차이는 너무 근소해서 그 선을 긋기가 애매할 정도다.

보호 메커니즘 개발에 뛰어들기 전에 프로그래머는 최소한 해커의 작업 방식과 그들이 사용하는 도구를 이해할 필요가 있다. 해커와 동등한 관점에서 해커의 무기고를 분석하는 것도 좋은 방법이다. 하지만 무엇보다 직접 부딪혀 보는 방법이 가장 효과적이다. 프로그래머는 실전 경험(프로그램 크래킹)을 통해 해커가 사용하는 공격 기법과 전략을 효과적으로 익힐 수 있고, 이를 통해 최적의 방어 전략을 구성할 수 있다. 또한 이런 경험은 해커의 공격 대상이 될 수 있는 가장 가능성 높은 대상을 찾아내 방어를 강화할 수 있는 대응력을 길러줄 뿐만 아니라, 프로그래머의 모든 가용 자원과 전략을 적재적소에 집중시킬 수 있게 만들어준다. 즉, 보호 메커니즘 개발자는 해커의 심리를 잘 파악해야 하며, 해커처럼 생각하는 습관을 길러야 한다.

정보보호 기술을 통달하는 것은 크래킹 기법을 통달하는 것과 같다. 보호 메커니즘에 존재하는 취약점에 대한 이해와 이를 크랙하는 방법, 해커의 무기고에 대한 정보 없이는 저렴한 비용으로 쉽게 구현이 가능하면서도 강력한 보호 메커니즘을 개발할 수 없다. 보호 메커니즘의 관점에서 기술된 대부분 보안 관련 서적들은 실제 애플리케이션이 아닌 단편화된 정보 제공에 대해서만 언급하는 경향이 있다.

이 책은 크래킹이나 안티해커 보호 메커니즘에 대한 매뉴얼이 아니다. 이런 매뉴얼 형식의 책은 이미 많이 시판됐으며, 그보다 이 책은 코드 분석가를 위한 ‘여행 일기’에 가깝다고 할 수 있다. 이 책을 통해 인텔 컴파일러부터 상용 프로그램의 보호 메커니즘 내부를 전문적으로 다루기 위한 디스어셈블러와 디버거 활용법 등을 학습한다. 당장이라도 이 책을 던져버리고 싶을 만큼 앞으로 나아가는 것이 두려운 사람이 아니라면 누구라도 새롭고 흥미로운 사실을 깨우칠 수 있는 기회를 얻게 될 것이다.

개정2판에서 새롭게 추가된 내용

이 책의 초기 목적은 전문가의 분석 능력 향상에 초점을 맞췄다. 하지만 1판이 발행된 후 독자들에게 받은 칭찬과 비판들을 고려하지 않을 수 없었다. 독자들은 책이 좀 더 대중성 있고 많은 사람이 이해하기 쉽게 구성되기를 원했다. 하지만 한 권의 책에 모든 독자가 만족할 만한 내용을 전부 포함시키는 것은 거의 불가능하다. 나는 이 책이 가장 폭넓고 든든한 독자층인 해킹 초보자들의 갈증을 해소할 수 있게 도와주고 싶다. 초보자들이 컴퓨터에 느끼는 심리적 무기력감을 이 책을 통해 극복할 수 있다면 더할 나위 없을 것 같다.

전문가들에게는 이 책의 내용이 크게 도움이 되지 않을 수 있다. 대부분 전문가들은 1판의 내용 중 흥미로운 부분들이 곳곳에 산재해 있는 정도여서 책을 대략적으로 훑는 것만으로 충분하다고 언급했다. 예를 들어 다음과 같은 의견이 있었다. “이 책에는 좋은 내용이 많이 담겨 있지만, 개인적으로 깊이 있는 설명 면에서는 부족하다고 생각한다.” 많은 전문가 독자가 책이 너무 윈도우 중심으로 서술돼 있다는 불만을 제기했다. 이러한 비난은 나의 역할과 임무를 명확하게 만드는 촉진제 역할을 했다.

2판을 집필함에 있어 1판에서 제기된 모든 비평을 최대한 수용하고 개선하기 위해 노력했다. 이 책의 2판에서는 실제 디스어셈블링 기법에 대한 내용을 보완했다. 책에서 제공된 이론과 예제는 디스어셈블링 입문에 필요한 내용을 포함한다. 특정 언어 구조체를 분석하는 것부터 시작해 디스어셈블된 코드에서 길을 잃지 않는 방법, 정교한 트랩에 빠지지 않는 방법까지 다양한 내용을 다룬다. 뿐만 아니라 메모리 덤프 분석과 합법적인 소프트웨어 보호 메커니즘, 악성 프로그램에 대한 내용을 다룬 새로운 단원도 추가했다. 모든 예제는 새로운 개념과 최신 트렌드를 고려해 수정 작업을 거쳤다. 특히 안티디버깅 기법 극복과 패킹, 암호화, 다형성, 난독화 처리된 코드 분석 같이 중요한 주제에 관련된 내용은 좀 더 심층적으로 다뤘다. 1판에서 누락됐거나 잘못된 부분 또한 모두 수정했다.

저자 소개

크리스 카스퍼스키(Kris Kaspersky)

유명 기술 서적 저자로서, 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 커널 개발, 소프트웨어 보호 메커니즘, 안티 바이러스 프로그램 개발과 관련된 보안 및 시스템 프로그래밍을 주로 다룬다.

옮긴이의 말

최근 몇 년간 발생했던 대형 보안 사고를 시작으로 보안 전문가에 대한 관심이 높아지고 있다. 사고 재발을 방지하기 위한 국가와 기업의 지원에 힘입어 많은 인재들이 보안 분야에 뛰어들고 있다. 하지만 보안 기술은 다른 분야와 달리 쉽게 접근하기 힘들 뿐만 아니라 기술 패러다임의 변화가 빨라 그 흐름을 따라가기가 어려운 편이다.

시대가 변하고 법의 기준이 달라져도 쉽게 바뀌지 않는 근본 철학이 있듯이 진정한 해커로 거듭나기 위해 반드시 거쳐야 하는 관문이 있다. 바로 분석 능력을 갖추는 것이다. 특히 디스어셈블링과 디버깅 기술은 가장 기본적이면서도 심도 있게 다가갈수록 해커를 힘들게 하는 가장 큰 장애물이라 할 수 있다. 특히 커널 분석의 경우 혈기 넘치는 초급 해커들의 발길조차 돌리게 만드는 넘기 힘든 큰 산과 같다.

처음 번역에 착수할 때만 해도 이 책을 잘 정리된 ‘분석 지침서’ 정도로만 생각했다. 하지만 번역을 진행할수록 이 책이 단순한 지침서를 넘어 분석 교과서로 불릴 수 있겠다는 생각이 들었다. 이 책에서는 심도 있는 원리 설명과 실습 예제를 통해 기초부터 고급 기술까지 방대하게 다룬다. 책의 뒷부분으로 갈수록 고급 분석 내용이 많이 포함돼 보안 분석에 익숙하지 않은 독자가 책을 읽어나가는 데 약간 힘들 수도 있다. 특히 커널과 관련된 내용은 해당 주제에 익숙하지 않은 독자에게 힘든 난관이 될 수 있다. 원활한 이해를 원하는 독자는 관련 서적을 참고할 것을 적극 권장한다.

원서가 출판된 시점은 2007년으로, 오랜 시간이 지나서야 정식 번역서로 한국 독자들에게 소개하게 됐다. 하지만 책에 포함된 분석 기법과 기본 원리는 6년이라는 시간이 무색할 만큼 잘 정리된 하나의 교과서 같은 느낌을 준다. 안타깝게도 책에 포함된 실습 수행에 필요한 분석 도구와 참고 사이트 링크가 소실된 경우가 많았다. 시간이 지나면서 대체된 도구나 변경된 다운로드 링크들을 찾기 위해 노력했다. 대부분 복구할 수 있었지만, 더 이상 찾을 수 없는 링크가 존재할 수 있음을 양해 바란다.

책에서 소개한 모든 분석 도구와 실습 예제가 최신 기술에 부응하지는 않지만, 분석을 통해 문제를 해결해 나가는 과정은 고급 해커로 성장하는 데 큰 밑거름이 될 수 있을 것이다. 이 책이 지식을 갈구하는 많은 사람의 갈증을 해소시켜 줄 수 있는 훌륭한 연구 도우미로 자리 잡을 수 있기를 바란다.

옮긴이 소개

서준석

(주)한국정보보호교육센터에서 교육 관련 사업 관리 및 콘텐츠 연구를 수행했다. 온라인 보안 기술 커뮤니티인 보안프로젝트에서는 메타스플로잇 분석, 취약점 분석 부문 연구를 담당하고 있다. 다양한 시스템에 존재하는 취약점 연구에 관심이 있으며 최근에는 커널 시스템 분석에 초점을 맞춰 연구를 수행 중이다. 현재 고려대학교 정보보호대학원에 진학을 앞두고 있다. 저서로는 『Nmap NSE를 활용한 보안 취약점 진단』(에이콘출판, 2013년)을 공저했다.

목차

목차
  • 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장 악성코드 디버깅과 디스어셈블링
    • 디버거를 활용한 방첩 활동
    • 공격 코드 감사와 디스어셈블링
    • 참고 자료
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안