책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9788960775107
· 쪽수 : 1384쪽
책 소개
목차
<해킹의 꽃 디스어셈블링 Hacker Disassembling Uncovered>
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장 악성코드 디버깅과 디스어셈블링
___디버거를 활용한 방첩 활동
___공격 코드 감사와 디스어셈블링
___참고 자료
___정리
찾아보기
<리버싱>
1부 리버싱 101
1장 기초
___리버스 엔지니어링
___소프트웨어 리버스 엔지니어링: 리버싱
___리버싱 적용
______보안 관련 리버싱
_________악성코드 소프트웨어
_________암호 알고리즘 리버싱
_________디지털 저작권 관리
_________프로그램 바이너리 감사
______소프트웨어 개발에서의 리버싱
_________소프트웨어 간의 상호 운용
_________경쟁 제품 분석
_________소프트웨어의 품질과 안정성 측정
___로우레벨 소프트웨어
______어셈블리 언어
______컴파일러
______가상 머신과 바이트 코드
______운영체제
___리버싱 절차
______시스템 레벨 리버싱
______코드 레벨 리버싱
___사용 툴
______시스템 모니터링 툴
______디스어셈블러
______디버거
______디컴파일러
___리버싱은 합법적인 작업인가
______상호 운용성
______경쟁
______저작권법
______영업 비밀과 특허권
______디지털 밀레니엄 저작권법
______DMCA 사례
______사용권 계약
___예제 코드와 툴
___정리
2장 로우레벨 소프트웨어
___하이레벨 관점
______프로그램 구조
_________모듈
_________공통 구성 요소
______데이터 처리
_________변수
_________사용자 정의 데이터 구조체
_________리스트
______제어 흐름
______하이레벨 언어
_________C
_________C++
_________자바
_________C#
___로우레벨 관점
______로우레벨 데이터 처리
_________레지스터
_________스택
_________힙
_________실행 데이터 섹션
______제어 흐름
___어셈블리 언어 입문
______레지스터
______플래그
______명령 포맷
______기본 명령
_________데이터 이동
_________산술 연산
_________비교 연산
_________조건 분기
_________함수 호출
______코드 예
___컴파일러 기초
______컴파일러란
______컴파일러 아키텍처
_________프런트엔드
_________중간 표현
_________최적화기
_________백엔드
______리스팅 파일
______사용 컴파일러
___실행 환경
______소프트웨어 실행 환경(가상 머신)
_________바이트 코드
_________인터프리터
_________Just-in-Time 컴파일러
_________리버싱 전략
______최신 프로세서에서의 하드웨어 실행 환경
_________Intel NetBurst
_________μops(Micro-Ops)
_________파이프라인
_________분기 예측
___정리
3장 윈도우 기초
___컴포넌트와 기본 아키텍처
______간략한 역사
______특징
______지원 하드웨어
___메모리 관리
______가상 메모리와 페이징
_________페이징
_________페이지 폴트
______워킹 셋
______커널 메모리와 유저 메모리
______커널 모드 공간
______섹션 객체
______VAD 트리
______유저 모드 메모리 할당
______메모리 관리 API
___객체와 핸들
______네임드 객체
___프로세스와 스레드
______프로세스
______스레드
______컨텍스트 스위칭
______동기화 객체
______프로세스 초기화 과정
___애플리케이션 프로그래밍 인터페이스
______Win32 API
______네이티브 API
______시스템 콜 메커니즘
___실행 포맷
______기본 개념
______이미지 섹션
______섹션 정렬
______동적 링크 라이브러리
______헤더
______임포트와 익스포트
______디렉터리
___입력과 출력
______I/O 시스템
______Win32 서브시스템
_________객체 관리자
___구조화된 예외 처리
___정리
4장 리버싱 툴
___다양한 리버싱 방법
______오프라인 코드 분석(Dead-Listing)
______라이브 코드 분석
___디스어셈블러
_________IDA Pro
______ILDasm
___디버거
______유저 모드 디버거
_________OllyDbg
_________WinDbg를 이용한 유저 모드 디버깅
_________IDA Pro
_________PEBrowse Professional Interactive
______커널 모드 디버거
_________WinDbg를 이용한 커널 모드 디버깅
_________Numega SoftICE
_________가상 머신에서의 커널 디버깅
___디컴파일러
___시스템 모니터링 툴
___패치 툴
______Hex Workshop
___기타 리버싱 툴
______실행 이미지 덤프 툴
_________DUMPBIN
_________PEView
_________PEBrowse Professional
___정리
2부 리버싱 응용
5장 리버싱 실전
___리버싱과 상호운용성
___기본 원칙
___문서화되지 않은 API를 찾는 방법
______찾고자 하는 것
___사례 연구: NTDLL.DLL의 Generic Table API
______RtlInitializeGenericTable
______RtlNumberGenericTableElements
______RtlIsGenericTableEmpty
______RtlGetElementGenericTable
_________셋업과 초기화
_________로직과 구조
_________검색 루프 1
_________검색 루프 2
_________검색 루프 3
_________검색 루프 4
_________소스코드 추출
______RtlInsertElementGenericTable
_________RtlLocateNodeGenericTable
_________RtlRealInsertElementWorker
_________Splay 트리
______RtlLookupElementGenericTable
______RtlDeleteElementGenericTable
______분석한 내용 종합
___정리
6장 파일 포맷 분석
___Cryptex
___Cryptex 사용
___Cryptex 리버싱
___패스워드 검증 과정
______"Bad Password" 메시지 잡아내기
______패스워드 변환 알고리즘
______패스워드 해싱
___디렉터리 구조
______디렉터리 처리 코드 분석
______파일 엔트리 분석
___디렉터리 구조 덤프
___파일 추출 과정
______파일 목록 검색
______파일 복호화
______부동소수점 연산
______복호화 루프
______해시 값 검증
___정리
___좀 더 자세히
___결론
7장 프로그램 바이너리 감사
___문제점 정의
___보안 취약점
______스택 오버플로우
_________간단한 스택 보안 취약점
_________내부 구현
_________스택 검사
_________비실행 가능 메모리
______힙 오버플로우
______문자열 필터
______정수 오버플로우
_________사용자 입력 정수에 대한 산술 연산
______형 변환 에러
___사례: IIS 인덱싱 서비스 보안 취약점
______CVariableSet::AddExtensionControlBlock
______DecodeURLEscapes
___정리
8장 악성코드 리버싱
___악성코드의 종류
______바이러스
______웜
______트로이 목마
______백도어
______모바일 코드
______애드웨어/스파이웨어
___스틱키 소프트웨어
___미래의 악성코드
______정보 탈취 웜
______바이오스/펌웨어 악성코드 331
___악성코드의 목적
___악성코드 취약점
___다형성
___변종
___안전한 리버싱 환경 구축
___Backdoor.Hacarmy.D
______실행 파일 언패킹
______최초 실행
______설치
______네트워크 연결
______서버에 연결
______채널에 접속
______백도어와 통신
______SOCKS4 서버 실행
______자체 제거
___Backdoor.Hacarmy.D: 명령 레퍼런스
___정리
3부 크래킹
9장 저작권 침해와 불법 복사 방지
___저작권
___사회적 측면
___소프트웨어 저작권 침해
______문제 정의
______보안 결함
______필요 조건
______이론적으로 크랙이 불가능한 모델
___보호 유형
______매체 기반 보호
______시리얼 번호
______질의 응답과 온라인 인증
______하드웨어 기반의 보호
______서비스로서의 소프트웨어
___진보된 보호 개념
______크립토 프로세서
___디지털 저작권 관리
______DRM 모델
_________윈도우 미디어 저작권 관리자
_________시큐어 오디오 패스
___워터 마크
___신뢰 컴퓨팅
___복사 방지 기술 공격
___정리
10장 안티 리버싱 기술
___안티 리버싱이 필요한 이유
___기본적인 안티 리버싱 방법
___심볼 정보 제거
___코드 암호화
___안티 디버거 기술
______디버거 기본
______IsDebuggerPresent API
______SystemKernelDebuggerInformation
______싱글 스텝 인터럽트를 이용한 SoftICE 탐지
______트랩 플래그
______코드 체크섬
___안티 디스어셈블러
______선형 스윕 디스어셈블러
______Recursive Traversal 디스어셈블러
______적용
___코드 난독화
___제어 흐름 변환
______Opaque Predicates
______안티 디컴파일러
______Table Interpretation
______인라인닝과 아웃라이닝
______인터리빙 코드
______순서 변환
___데이터 변환
______변수 인코딩
______배열 재구성
___정리
11장 보호 기술 파괴
___패치
___Keygen
___키 생성 알고리즘 추출
___고급 크래킹: Defender
______Defender의 초기화 루틴 리버싱
______복호화된 코드 분석
______사라진 SoftICE
______스레드 리버싱
______"Killer" 스레드 무력화
______KERNEL32.DLL 로딩
______함수 재암호화
______엔트리 포인트로 다시 돌아가서
______프로그램 파라미터 파싱
______사용자 이름 처리
______사용자 정보 검증
______코드 복호화
______Defender에 대한 무작위 대입
___Defender의 보호 기술
______함수 레벨의 암호화
_________상대적으로 강력한 암호 블록 체인
_________재 암호화
______애플리케이션/운영체제와의 인터페이스 난독화
______프로세서 타임 스탬프 검증 스레드
______실행 시에 복호화 키 생성
_________상호 의존 키
_________사용자 입력 기반의 복호화 키
______인라이닝
___정리
4부 디스어셈블리 너머
12장 닷넷 리버싱
___기반 지식
___닷넷 기본
______매니지드 코드
______닷넷 프로그래밍 언어
______공통 타입 시스템
___중간 언어
______평가 스택
______활성화 레코드
______IL 명령
______IL 코드 샘플
_________Counting Items
_________링크드 리스트 샘플
___디컴파일러
___난독기
______심볼 이름 변경
______제어 흐름 변경
______디컴파일과 디스어셈블리 차단
___난독화된 코드 리버싱
______XenoCode
______Preemptive Solutions의 DotFuscator
______Remotesoft 난독기와 링커
______Remotesoft Protector
______어셈블리 프리컴파일
______어셈블리 암호화
___정리
13장 디컴파일
___네이티브 코드 디컴파일
___전형적인 디컴파일러의 구조
___중간 표현
______표현식과 표현식 트리
______제어 흐름 그래프
___프론트엔드
______의미 분석
______제어 흐름 그래프 생성
___코드 분석
______데이터 흐름 분석
_________단일 정적 할당
_________데이터 전달
_________레지스터 변수 구별
_________데이터 타입 전달
______타입 분석
_________기본 데이터 타입
_________복잡한 데이터 타입
______제어 흐름 분석
______라이브러리 함수의 구별
___백엔드
___실제 IA-32 디컴파일러
___정리
부록 A 코드 구조 해석
부록 B 컴파일된 연산의 이해
부록 C 프로그램 데이터 해석
부록 D 인용문