리버스 엔지니어링 바이블 : 북윈도
리뷰 0 위시 120

리버스 엔지니어링 바이블 요약정보 및 구매

코드 재창조의 미학

상품 선택옵션 0 개, 추가옵션 0 개

출판사 위키북스
저자 강병탁
ISBN 9788998139728 (8998139723)
정가 35,000원
판매가 31,500원(10% 할인)
배송비 무료배송
포인트 정책 설명문 닫기

00포인트

포인트 정책 설명문 출력

선택된 옵션

관심상품

상품 정보

사은품
상품 기본설명
코드 재창조의 미학
상품 상세설명


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

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

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

어셈블리의 기본 구조
어셈블리의 명령 포맷t
레지스터, 복잡한 설명은 그만t
EAXt
EDXt
ECXt
EBXt
ESI, EDIt
외울 필요가 없는 어셈블리 명령어t
- PUSH, POPt
- MOVt
- LEAt
- ADDt
- SUBt
- INTt
- CALLt
- INC, DECt
- AND, OR, XORt
- NOPt
- CMP, JMPt
리버스 엔지니어링에 필요한 스택
함수의 호출t
리턴 주소t

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

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

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

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

▣ 04장_DLL 분석t

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

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

▣ 05장_PE 헤더(PE Header)t

PE에 대한 상식적인 개념t
빌드 과정t
PE 파일 구조t
- IMAGE_DOS_HEADERt
- IMAGE_NT_HEADERt
- IMAGE_FILE_HEADERt
- Machine
- NumberOfSectionst
- TimeDateStamp
- SizeOfOptionalHeadert
IMAGE_OPTIONAL_HEADERt
- Magict
- SizeOfCodet
- MajorLinkerVersion, MinorLinkerVersiont
- ImageBaset
- AddressOfEntryPointt
- BaseOfCodet
- SectionAlignment, FileAlignment;t
- SizeOfImaget
- SizeOfHeaderst
- Subsystem- - - - - - - : 0x2 (Windows GUI)t
- DataDirectoryt
IMAGE_SECTION_HEADERt
PE와 API 호출의 원리t
IAT에서 API를 계산하는 방법t
익스포트 테이블 (export table)t
마무리t

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

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

▣ 07장_MFC 리버싱t

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

[03부] 연산 루틴 리버싱t

▣ 08장_시리얼 추출 방법t

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

▣ 09장_코드 속이기t

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

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

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

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

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

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

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

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

▣ 13장_우회 방법t

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

[05부] OllyDBG 플러그인t

▣ 14장_OllyDBG 플러그인 SDKt

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

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

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

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

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

[06부] 보안 모듈 우회t

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

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

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

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

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

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

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

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

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

▣ 21장_코드 후킹t

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

▣ 22장_코드 패칭t

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

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

디스어셈블러 개론t
안티 디스어셈블링t
가비지 코드 속에 담긴 진짜 코드t
ASPack이 사용하는 안티 디스어셈블링t
Themida에서 사용하는 안티 디스어셈블링t
ASProtect 의 코드 카피t
Themida의 코드 리다이렉트t
상수 암호화t
API 호출 감추기t
난독화 코드 찾아내어 우회하기t
마무리
책속으로
정보보안의 태동기에는 네트워크 보안, 시스템 보안 두 영역에서 방화벽과 같은 네트워크 단에서의 필터링 기술과, OS 단에서의 아주 기본적인 요소기술이 발전했었다. 그 뒤 나온 보안기술들을 보더라도 네트워크 기반 침입탐지시스템(N-IDS), 침입방지시스템(IPS), 웹애플리케이션방화벽(WAF)과 같이 주로 이미 발생해서 인스턴스화된 공격에 대해 탐지와 예방을 하는 것들이 주류를 이뤘다. 예전부터 개념 역시 존재했고 소수 기업 및 인원들에 의해 이뤄지고는 있었지만, 이미 개발된 프로그램 그 자체에 대한 취약점을 발견해 내기 위해 시큐어코딩이나 개발보안에 사람들이 관심을 갖고 노력을 하기 시작한 것은 사실 10년도 채 되지 않았다고 볼 수 있다. 보안산업 역시 고도화 되어가는 과정에서 나타나는 현상 중 하나로, 일단 기본적인 기술들이 먼저 발전한 뒤에야, 특화된 영역에 대한 요소기술로 깊이 연구가 이뤄지게 된다. 전통적인 네트워크 보안 영역에 쏠렸고(Firewall, N-IDS), 그 후 OS 영역(H-IDS, SecureOS)에 주 초점이 맞춰져 있었다가, DB/Application 영역 (DB보안, 웹보안 및 시큐어코딩 등의 개발보안)으로 관심사가 옮겨가면서 리버스 엔지니어링 기술의 중요성은 두말할 나위 없이 보안 분야 종사가 반드시 갖춰야 할 기술로 자리 잡았다. 다양한 보안직군 가운데 모의해킹, 취약점분석을 주로 하거나 또는 악성코드 분석 또는 안티 리버스 엔지니어링(Anti-Reverse Engineering)을 통해 보안을 강화하고자 한다면 리버스 엔지니어링 관련 지식을 꼭 쌓을 것을 권하고 싶다. 리버스 엔지니어링 지식과 더불어 Solaris, HP-UX, AIX, Linux, FreeBSD와 같은 다양한 OS를 다뤄보고 각 환경에서의 프로그래밍 스킬을 함께 익힌다면 보안 분야에서 “자신만의 고유한(unique) 능력을 갖춘 대체 불가능한(irreplaceable) 인재"로 성장하리라 확신한다. 이 책은 리버스 엔지니어링에 대해 충실히 다룰 뿐 아니라, 익힌 리버스 엔지니어링 기법을 실제로 어떤 곳에 활용할 수 있는지에 대해서도 상세히 다룬다. 그간 저자가 오랜 기간 동안 시행착오를 겪으면서 익힌 소중한 지식을, 그다음에 배우는 사람들은 실수와 시행착오를 최소한으로 하고 배울 수 있게 여기저기에 배려하고 있으며, 복잡하고 어렵기만 한 내용을 편안하게 전달하는 저자 특유의 노하우가 담겨 있다.
-감수자의 글 중에서
출판사 서평
리버스 엔지니어링만을 위한 바이블, 리버싱의 모든 것이 이 책 한 권에 녹아 있다!리버스 엔지니어링은 소위 해커들의 전유물처럼 취급돼 왔다. 기술이 가지고 있는 위험성 때문에 수면 위로 올라오지 못하고 '어둠의 예술'이라고 불리며 그간 많은 사람들에게 정체가 가려져 있었다. 그래서 역사가 오래됐음에도 뚜렷한 전문서나 바이블이 존재하지 않으며, 인가된 해커들만 정보를 공유할 수 있거나 리버싱 업무를 수행하던 소수의 리서처에게 발품을 팔아 하나씩 배워야만 했다.『리버스 엔지니어링 바이블: 코드 재창조의 미학』은 이 같이 해커들이 주고받던 어둠의 지식을 수면 위로 끌어올리는 역할을 한다. 많은 사람들이 리버스 엔지니어링에 대해 깊이 있는 지식을 만나지 못하고 마약을 밀매하듯 은밀하게 기법을 주고받았지만, 이제 이 책을 통해 그 모든 목마름에 대한 해답을 찾을 수 있다. 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부의 내용을 반드시 숙지한 후에 살펴보길 바란다.[추천평]리버스 엔지니어링의 역사는 사실 깊다. 아마도 엔지니어링이 시작되었던 인류 역사 초기부터, 리버스 엔지니어링은 존재했을 것이다. 리버스 엔지니어링은 누군가가 만들어 놓은 것을 분해해서 분석하고 재조합하는 과정을 말한다. 그 대상이 인간이 만든 기계 장치가 될 수도 있을 것이고, 자연에 존재하는 생명체나 유전자, 화학 물질 등이 될 수도 있겠다.소프트웨어의 리버스 엔지니어링의 역사는 소프트웨어의 역사만큼이나 길 것이다. 기계어로 코딩을 해야 하는 시기에는 엔지니어링에 사용하는 언어와 리버스 엔지니어링으로 분석하는 언어도 같았다. 하지만 컴퓨터 언어 체계가 발전하고 다분화하면서 엔지니어링 과정에 비해 리버스 엔지니어링 과정은 현저히 복잡한 과정이 되었다. 단 한줄의 코드도 컴파일러의 종류, 작동 방식과 최적화 알고리즘 등에 의해 다른 형상을 가진 비트(bit)를 생성해 낸다. 이러한 복잡성의 증가로 인해 리버스 엔지니어링은 완벽함을 실현할 수 있는 분야가 아니다. 의도되거나 의도되지 않은 수많은 가지치기된 기술의 출현으로 바이너리들은 온갖 형상을 취할 수 있기 때문이다.소프트웨어 리버스 엔지니어링은 보안 분야나 악성 코드 분석에만 한정된 것이 아니다. 엔지니어링을 할 때도 리버스 엔지니어링은 필수적인 과정의 일부다. 특히 요즘처럼 개발을 위한 요소가 모듈화돼 있는 경우 소스코드를 얻기 어려운 모듈의 작동 방식에 대한 이해도를 높이기 위해서는 리버스 엔지니어링은 필수다. 또한 자신이 직접 작성한 코드라도 작동 방식의 문제를 해결하거나 최적화 등을 이루기 위해서는 리버스 엔지니어링은 필수적인 과정이다.본질적으로 리버스 엔지니어링을 가장 빠르게 습득하는 방법은 엔지니어링을 먼저 섭렵하는 것이다. 엔지니어링에 관한 각 분야별 정보는 넘치도록 있으니 일단 그 부분을 섭렵하고 들어 가는 것이 좋을 것이다. 하지만 이미 그러한 과정을 거치고 지나간 선생들의 가르침을 들어 보는 것도 좋을 것이다. 이 책의 의미가 바로 거기에 있다. 책 한권으로 리버스 엔지니어링을 모두 이해하겠다는 것은 어불성설이다. 하지만 이 책을 통해 현업에서 실제로 쓰이는 기술과 전략, 트릭 등에 대한 지식을 습득할 수 있을 것이라고 본다. 책을 읽다 보면 저자가 실무에서 풍부한 경험을 쌓아 왔다는 것을 책을 통해 쉽게 느낄 수 있었다.책 자체는 심심풀이용으로 읽을 수 있을 만큼 재미 있게 쓰여져 있다. 예전에 어렸을 적에 흔히 보던 퍼즐 문제집을 읽는 것처럼 흥미진진하다. 저자의 의도대로 책을 읽으면서 예제를 따라해 본다면 어느덧 리버스 엔지니어링의 세계에 빠져 있는 자신을 발견할지도 모른다. 흥미로운 전개 방식은 첫 장을 읽고 어딘가에 처박아 놓고 몇 달, 몇 년이 지나도 다시 펴 보지 않는 책과의 차별 요소라고 할 것이다. 그러한 재미를 담는 여유 또한 지은이의 오랜 연륜에서 나오는 것이라 보고 싶다.이제 독자 여러분도 맛있는 리버스 엔지니어링의 세계에 푹 빠져 볼 것을 권한다. 물론 맛있게 요리된 지식을 소화해서 자신의 것으로 만드는 것은 전적으로 독자의 몫일 것이다. 이렇게 재미와 내용의 균형이 잡힌 책인 한국에서도 나왔다는 사실을 기뻐하며, 이 서평을 마칠까 한다.
- Matt 오정욱, 현) Microsoft Malware Protection Center(미국 시애틀) 근무우리는 지금 총성없는 전쟁, 바로 사이버 전쟁 시대에 살고 있다. 국가에서도 사이버 사령부를 창설하고 보안 인재를 육성하기 위해 다양한 시도를 하고 있으며 언론이나 사람들의 관심도 날로 높아지고 있다. 한편 보안 전문가라 하면 보안이라는 용어가 지닌 지나치게 광범위한 의미 탓에 과연 어떤 지식을 겸비해야 보안 전문가로 칭할 수 있는지가 애매한 부분이 있고, 때문에 보안 전문가를 만나보면 문제 풀이나 이론적인 부분에만 치중해 있어 실무적인 감각은 떨어지는 경우가 종종 있다.이 책은 국내 최고 보안 전문가이면서 넥슨 미국지사 보안팀을 책임지고 있는 강병탁 님의 실전 노하우가 녹아있는 책이다. 저자가 진행한 세미나와 블로그를 통해 그의 노하우가 공개된 적은 있지만 접하기 어려운 사람들이 많았기에 이번 책이 특히 기대되는 이유이기도 하다. 이 책은 수많은 보안 기술 분야 중에서 ‘리버싱’을 중점적으로 설명하고 있다. 리버싱은 보안 전문가라면 반드시 마스터해야 하는 기술로 소위 ‘분석’ 작업의 기초 기술이기도 하다. 하지만 기계가 이해할 수 있는 있는 언어로 만들어진 코드를 인간이 이해할 수 있는 논리도 변환하기는 쉽지 않다. 그뿐만 아니라 패킹과 같은 안티-리버싱 기법의 범용화로 더 이상 예제 수준의 리버싱 기법만 배워서는 실무에서 어떤 정보도 얻지 못하고 좌절하고 말 것이다. 이 책은 저자가 실무에서 경험하고 해결했던 수많은 사례를 통해 리버싱의 기초부터 안티-리버싱 기법에 이르는 전방위적인 리버싱 기법에 대해 설명한다.모든 보안 분야가 그렇듯이 사용하는 사람에 따라 칼이 될 수도 있고 방패가 될 수도 있다. 이 책의 내용은 기업의 자산을 외부로부터 보호하기 위해서지만 ‘6장 보안 모듈 우회’와 같은 기법은 해킹 도구를 만드는 사람들에게는 악용될 소지가 있다. 하지만 그럼에도 불구하고 이 책에서 상세하게 보안 모듈 우회 기법을 설명함으로써 오히려 음지의 기법을 양지로 드러내면 해당 분야가 더욱 발전할 수 있는 기회가 될 것이다.끝으로 리버싱이 기술적 난이도로 인해 설명하기 쉽지 않은 분야지만 저자만의 위트 있는 설명과 다양한 도식, 예제 코드 등을 통해 독자 여러분도 소설책 읽듯이 리버싱을 이해할 수 있을 것이다. 오랜만에 국내 저자가 집필한 완성도 높은 보안 서적을 만나게 되어 정말 기쁘다.
- 서우석, 현) 파인드스티브 대표이사인간은 살아가면서 한번쯤 모순적인 선택을 할 수밖에 없는 상황에 부딪히게 된다. 보안과 해킹! 절대로 뚫릴 수 없다는 보안과 무엇이든 뚫을 수 있다는 해킹, 보안을 천직으로 하는 사람들은 이 창과 방패의 모순 속에서 치열하게 싸움을 하고 있다. 보안과 해킹은 그 태생이 같다. 기술적인 기본이 같다는 얘기다. 그 기술을 사용하는 사람과 적용하는 대상에 따라 선이 될 수도 있고 악이 될 수도 있다. 그렇기 때문에 보안과 해킹은 더더욱 모순과의 싸움이 될 수밖에 없다고 생각한다.어찌보면 이 책의 저자인 강병탁 님도 이 책을 통해 그 모순에 대한 스스로의 고민을 말하고 싶었는지도 모르겠다. 리버싱의 기본부터 방어기능, 공격기능을 차례로 설명하면서, 선과 악에 대한 선택을 독자에게 맡기는 잔인함도 보인다. 자칫 양날의 검이 될 수도 있는 기술들 중에서 가장 기본이 되는 것이 바로 리버싱이다.그동안 리버싱에 대해서는 많은 번역서가 출간되었다. 그러나 지금까지의 리버싱 관련 서적은 현업에서의 경험과 지식에 기반을 두고 있다기보다는 대부분 이론적인 내용을 기반으로 한다. 리버싱을 완벽하게 이해하려면 운영체제, 프로그래밍, 컴파일러 등 여러 가지 기본적인 지식이 필요하기 때문에 이론에만 치우칠 경우 독자들이 쉽게 다가갈 수 없는 벽이 느껴질 수밖에 없다.그러나 이 책은 현업에서 보안전문가로서의 저자의 경험을 바탕으로 기본적인 지식이 조금 부족하더라도 리버싱을 이해하는 데 전혀 어려움이 없을 정도로 매우 친절하게 설명돼 있다. 또한 저자 특유의 감각이 돋보이는 제목과 설명으로 자칫 지루하고 딱딱하게 느낄 수 있는 내용을 공부하고 싶은 호기심으로 바꾸고 있다. 이 책을 발판으로 실무 경험을 바탕으로한 좋은 내용의 국내 서적들이 많이 출간되어 보안을 꿈꾸는 많은 이들의 길잡이가 되기를 희망한다.마지막으로, 언제나 새로운 목표를 향해 도전하는 강병탁 님에게 마음속 깊은 응원의 박수를 보낸다.
- 이호웅, 현) 안철수연구소 ASEC 센터장[베타리더]“한 권의 명저가 탄생했다. 기존의 책과는 차별화된 방식으로 리버스 엔지니어링에 접근하는 이 책은 리버스 엔지니어링의 현대판 바이블이라고 생각한다. 저자의 노고에 무한한 박수를 보낸다.”
- 이홍선, 넥슨 코리아 게임보안팀“실무자로서의 경험과 연구에서 비롯된 리버스 엔지니어링에 관한 다향한 기술, 기법들을 집대성한 주옥같은 학습서다. 쉬운 예제와 친절한 설명으로 이 새로운 세계에 쉽게 적응할 수 있도록 도와주며 구체적인 설명으로 기술에 대한 이해를 높여주고 이에 더해 기존에는 잘 다뤄지지 않았던 부분에 대한 전문적인 노하우를 알려주고 있어 중급 이상의 과정으로 나아가려는 이들이라면 시행착오를 줄이고 시간을 절약하는 데 도움될 것이다.”
- 이진석, 넥슨 코리아 게임보안팀“리버스 엔지니어링을 강병탁 님 특유의 위트 있는 어투로 재미있게 풀어낸 책이다. 그동안 게임보안 일을 하며 많은 책을 봐왔지만 이렇게 군더더기 없이 필요한 것만 설명해주는 책은 처음이다. 이제부터 이 책은 지금까지와는 다른 리버스 엔지니어링 입문서가 될 것이다.”
- 김동현, 넥슨 코리아 게임보안팀“리버스 지니어링의 기초부터 고급기술까지 다루고 있는 책이다. 베타리더를 진행하면서 새롭게 알게 된 부분도 많고, 기초를 다시 다지는 계기가 되었다. 이 책을 읽는 독자들 또한 실력이 두 단계 업그레이드될 것이라 장담하며, 리버스 엔지니어링의 세계를 경험해 보시기 바란다.”
- 전동기, 넥슨 코리아 게임보안팀“강력한 비급이 담겨 있을수록 어려운 내용으로 인해 주화입마에 빠지고 마는 경우가 많다. 하지만 이 책은 그러한 주제를 특유의 위트와 재치로 풀어낸 비급서가 아닐까 생각한다.”
- 최종학, 넥슨 코리아 게임보안팀“아직 많은 부분에서 부족한 내가 이 책을 통해 얻게 된 것, 그것은 저자가 수년간 게임 보안 업계에서 쌓아온 실무 노하우였다. 해커들과 수없이 공방을 치뤄야 하는 나에게 이 책은 전 세계 해커들과 맞짱을 뜰 수 있게 해준 무기였다.”
- 김지호, 넥슨 코리아 게임보안팀처음 시작조차 막막하고 높은 벽처럼 느껴졌던 리버싱 기술에 어떻게 접근해야 하는지, 그 기술의 핵심이 무엇인지 보여주는 지침서라고 생각한다. 처음 리버싱을 공부했을 때 어셈블리 책을 읽다가 좌절했던 경험을 겪어본 한 사람으로서 지식과 실무 경험이 녹아 있는 이 책으로 보안 분야에 입문하기를 감히 추천한다.
- 김창규, 넥슨 아메리카 정보보안팀
상품 정보 고시
도서명 리버스 엔지니어링 바이블
저자 강병탁
출판사 위키북스
ISBN 9788998139728 (8998139723)
쪽수 565
출간일 2014-11-21
사이즈 260 * 286 * 26 mm
목차 또는 책소개 [01부] 리버스 엔지니어링 기본t

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

어셈블리의 기본 구조
어셈블리의 명령 포맷t
레지스터, 복잡한 설명은 그만t
EAXt
EDXt
ECXt
EBXt
ESI, EDIt
외울 필요가 없는 어셈블리 명령어t
- PUSH, POPt
- MOVt
- LEAt
- ADDt
- SUBt
- INTt
- CALLt
- INC, DECt
- AND, OR, XORt
- NOPt
- CMP, JMPt
리버스 엔지니어링에 필요한 스택
함수의 호출t
리턴 주소t

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

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

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

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

▣ 04장_DLL 분석t

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

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

▣ 05장_PE 헤더(PE Header)t

PE에 대한 상식적인 개념t
빌드 과정t
PE 파일 구조t
- IMAGE_DOS_HEADERt
- IMAGE_NT_HEADERt
- IMAGE_FILE_HEADERt
- Machine
- NumberOfSectionst
- TimeDateStamp
- SizeOfOptionalHeadert
IMAGE_OPTIONAL_HEADERt
- Magict
- SizeOfCodet
- MajorLinkerVersion, MinorLinkerVersiont
- ImageBaset
- AddressOfEntryPointt
- BaseOfCodet
- SectionAlignment, FileAlignment;t
- SizeOfImaget
- SizeOfHeaderst
- Subsystem- - - - - - - : 0x2 (Windows GUI)t
- DataDirectoryt
IMAGE_SECTION_HEADERt
PE와 API 호출의 원리t
IAT에서 API를 계산하는 방법t
익스포트 테이블 (export table)t
마무리t

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

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

▣ 07장_MFC 리버싱t

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

[03부] 연산 루틴 리버싱t

▣ 08장_시리얼 추출 방법t

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

▣ 09장_코드 속이기t

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

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

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

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

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

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

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

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

▣ 13장_우회 방법t

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

[05부] OllyDBG 플러그인t

▣ 14장_OllyDBG 플러그인 SDKt

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

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

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

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

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

[06부] 보안 모듈 우회t

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

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

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

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

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

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

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

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

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

▣ 21장_코드 후킹t

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

▣ 22장_코드 패칭t

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

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

디스어셈블러 개론t
안티 디스어셈블링t
가비지 코드 속에 담긴 진짜 코드t
ASPack이 사용하는 안티 디스어셈블링t
Themida에서 사용하는 안티 디스어셈블링t
ASProtect 의 코드 카피t
Themida의 코드 리다이렉트t
상수 암호화t
API 호출 감추기t
난독화 코드 찾아내어 우회하기t
마무리
상품 정보 고시
도서명 상품페이지 참고
저자 상품페이지 참고
출판사 상품페이지 참고
크기 상품페이지 참고
쪽수 상품페이지 참고
제품구성 상품페이지 참고
출간일 상품페이지 참고
목차 또는 책소개 상품페이지 참고
배송공지

사용후기

회원리뷰 총 0개

사용후기가 없습니다.

상품문의

등록된 상품문의

상품문의 총 0개

상품문의가 없습니다.

교환/반품

[반품/교환방법]
마이페이지> 주문배송조회 > 반품/교환신청 또는 고객센터 (070-4680-5689)로 문의 바랍니다.

[반품주소]
- 도로명 : (10882) 경기도 파주시 산남로 62-20 (산남동)
- 지번 : (10882) 경기도 파주시 산남동 305-21

[반품/교환가능 기간]
변심반품의 경우 수령 후 14일 이내, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

[반품/교환비용]
단순 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담

[반품/교환 불가 사유]
- 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
(단지 확인을 위한 포장 훼손은 제외)
- 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
예) 화장품, 식품, 가전제품(악세서리 포함) 등
- 복제가 가능한 상품 등의 포장을 훼손한 경우
예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
- 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
- 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
- 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
- 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
* (1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시
‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)

[상품 품절]
공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.

[소비자 피해보상, 환불지연에 따른 배상]
- 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됩니다.
- 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함.

회원로그인

오늘 본 상품

  • 리버스 엔지니어링 바이블
    리버스 엔지니어링
    31,500