본문내용 바로가기
MD의선택 무료배송 이벤트 사은품 소득공제

리버스 엔지니어링 바이블 코드 재창조의 미학

위키북스 해킹 & 보안 시리즈 5
강병탁 지음 | 위키북스 | 2014년 11월 21일 출간
클로버 리뷰쓰기
  • 정가 : 35,000원
    판매가 : 31,500 [10%↓ 3,500원 할인]
  • 혜택 :
    [기본적립] 1750원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2,000원 추가적립 안내 [회원혜택] 회원 등급 별, 3만원 이상 구매 시 2~4% 추가적립 안내 [리뷰적립] 리뷰 작성 시 e교환권 최대 300원 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    지금 주문하면 내일(13일,목) 도착 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
  • 행사도서 포함 2만원 이상 구매 시
    2021.04.28 ~ 2021.05.28
  • 책을 통해 성장해나가는 개발자를 응원합니다.
    2017.06.22 ~ 2025.07.31
상품상세정보
ISBN 9788998139728(8998139723)
쪽수 565쪽
크기 260 * 286 * 26 mm 판형알림

책소개

이 책이 속한 분야

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

목차

[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 호출 감추기
난독화 코드 찾아내어 우회하기
마무리

책 속으로

정보보안의 태동기에는 네트워크 보안, 시스템 보안 두 영역에서 방화벽과 같은 네트워크 단에서의 필터링 기술과, OS 단에서의 아주 기본적인 요소기술이 발전했었다. 그 뒤 나온 보안기술들을 보더라도 네트워크 기반 침입탐지시스템(N-IDS), 침입방지시스템(IPS), 웹애플리케이션방화벽(WAF)과 같이 주로 이미 발생해서 인스턴스화된 공격에 대해 탐지와 예방을 하는 것들이 주류를 이뤘다. 예전부터 개념 역시 존재했고 소수 기업 및 인원들에 의해 이뤄지고는 있었지만, 이미 개발된 프로그램 그 자체에 대한 취약점을 발견해 내기 위해 시큐어... 더보기

출판사 서평

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

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

『리버스 엔지니어링 바이블: 코드 재창조의 미학』은 이 같이 ... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

북로그 리뷰는 본인 인증 후 작성 가능합니다.
책이나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 내용은 비공개 처리 될 수 있습니다.
※ 북로그 리뷰 리워드 제공 2021. 4. 1 종료

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매 후 문장수집 작성 시, 리워드를 제공합니다. 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품