Table of Contents
1부 기초 리버싱
1장 Reversing Story
1.1. Reverse Engineering(RE)
1.2. Reverse Code Engineering(RCE)
1.2.1. 리버싱(분석) 방법
1.2.2. Source Code, Hex Code, Assembly Code
1.2.3. 패치와 크랙
1.3. 리버싱 준비물
1.3.1. 목표
1.3.2. 열정
1.3.3. 구글
1.4. 리버싱 방해물
1.4.1. 과욕
1.4.2. 조급함
1.5. 리버싱의 묘미
2장 Hello World! 리버싱
2.1. Hello World! 프로그램
2.1.1. 디버거와 어셈블리 언어
2.2. HelloWorld.exe 디버깅
2.2.1. 디버깅 목표
2.2.2. 디버깅 시작
2.2.3. EP
2.2.4. 40270C 함수 따라가기
2.2.5. 40104F 점프문 따라가기
2.2.6. main( ) 함수 찾기
2.3. 디버거 좀 더 능숙하게 다루기
2.3.1. 디버거 명령어
2.3.2. 베이스 캠프
2.3.3. 베이스 캠프를 설치하는 4가지 방법
2.4. 원하는 코드를 빨리 찾아내는 4가지 방법
2.4.1. 코드 실행 방법
2.4.2. 문자열 검색 방법
2.4.3. API 검색 방법 (1) - 호출 코드에 BP
2.4.4. API 검색 방법 (2) - API 코드에 직접 BP
2.5. “Hello World!” 문자열 패치
2.5.1. 패치
2.5.2. 문자열을 패치하는 두 가지 방법
2.6. 마무리
3장 Little Endian 표기법
3.1. 바이트 오더링 49
3.1.1. 리틀 엔디안 & 빅 엔디안
3.1.2. OllyDbg에서 리틀 엔디안 확인
4장 IA-32 Register 기본 설명
4.1. CPU 레지스터란?
4.1.1. 레지스터에 대해서 알아야 하는 이유
4.2. IA-32의 레지스터
4.2.1. Basic program execution registers
4.3. 마무리
5장 Stack
5.1. 스택
5.1.1. 스택의 특징
5.1.2. 스택 동작 예제
6장 abex crackme #1 분석
6.1. abex’ crackme #1
6.1.1. Start debugging
6.1.2. 코드 분석
6.2. 크랙
6.3. 스택에 파라미터를 전달하는 방법
6.4. 마무리
7장 Stack Frame
7.1. 스택 프레임
7.2. 실습 예제 - stackframe.exe
7.2.1. StackFrame.cpp
7.2.2. main( ) 함수 시작 & 스택 프레임 생성
7.2.3. 로컬 변수 셋팅
7.2.4. add( ) 함수 파라미터 입력 및 add( ) 함수 호출
7.2.5. add( ) 함수 시작 & 스택 프레임 생성
7.2.6. add( ) 함수의 로컬 변수(x, y) 셋팅
7.2.7. ADD 연산
7.2.8. add( ) 함수의 스택 프레임 해제 & 함수 종료(리턴)
7.2.9. add( ) 함수 파라미터 제거(스택 정리)
7.2.10. printf( ) 함수 호출
7.2.11. 리턴 값 셋팅
7.2.12. 스택 프레임 해제 & main( ) 함수 종료
7.3. OllyDbg 옵션 변경
7.3.1. Disasm 옵션
7.3.2. Analysis1 옵션
7.4. 마무리
8장 abex crackme #2
8.1. abex’ crackme #2 실행
8.2. Visual Basic 파일 특징
8.2.1. VB 전용 엔진
8.2.2. N(Native) code, P(Pseudo) code
8.2.3. Event Handler
8.2.4. undocumented 구조체
8.3. Start debugging
8.3.1. 간접호출
8.3.2. RT_MainStruct 구조체
8.3.3. ThunRTMain( ) 함수
8.4. crackme 분석
8.4.1. 문자열 검색
8.4.2. 문자열 주소 찾기
8.4.3. Serial 생성 알고리즘
8.4.4. 코드 예측하기
8.4.5. Name 문자열 읽는 코드
8.4.6. 암호화 루프
8.4.7. 암호화 방법
8.5. 마무리
9장 Process Explorer - 최고의 작업 관리자
9.1. Process Explorer
9.2. 구체적으로 뭐가 좋은 거죠?
9.3. sysinternals
10장 Calling Convention
10.1. Calling Convention
10.1.1. cdecl
10.1.2. stdcall
10.1.3. fastcall
11장 Lena’s Reversing for Newbies
11.1. 실행
11.2. 분석
11.2.1. 목표(1) - 메시지 박스 제거!
11.2.2. 패치(1) - 메시지 박스 제거
11.2.3. 목표(2) - Registration Code 찾기
11.3. 마무리
12장 도대체 리버싱을 어떻게 공부해야 하나요?
12.1. Reverse Engineeri