REVERSE ENGINEERING(리버스엔지니어링) – 역분석 구조와 원리

리버스 엔지니어링 : 역분석 구조와 원리
#1.

모 프로그램이 하도 떼를 쓰는 통에..
오래간만에 Ollydbg 한번 돌려봤다.


#2.

즐겨찾기를 뒤지던 중..
예전의 추억을 사이트를 방문하게 되었고,
책이 출판되었다는 사실을.. 이제서야 보게 되었고..
보자마자 질러 버렸다.

빨리 배송되기만을 손꼽아 기다리고 있음.



리버스엔지니어링 지침서!

‘TECH BOOK’ 시리즈, 제88권 『REVERSE ENGINEERING(리버스엔지니어링) – 역분석 구조와 원리』. 리버스엔지니어링에 대한 입문서이자 활용서다. 연습문제도 풍부하게 담아냈다.

초급자는 어셈블리 언어를 바탕으로, Crackme, Unpackme를 실습해보면서 리버스엔지니어링을 재미있게 학습해나갈 수 있다. 초중급자는 역분석 관련 법률의 정확한 해석을 이해함으로써, 소프트웨어 분석을 편하게 할 수 있는 방식을 익히게 된다.

개발자는 자신이 만든 프로그램이 안전한지를 테스트하는 방법을 배울 수 있다. 또한 악성코드 분석방법뿐 아니라, 안티 디버깅 기법을 학습함으로써, 크랙에 대비할 수 있도록 인도한다.

.1장 리버스엔지니어링에 대하여
1.1 리버스엔지니어링이란 무엇인가?
1.2 크래커에 의한 피해 사례, 개발자들이 주의할 부분
1.3 리버스엔지니어링의 전망과 취업
1.4 리버스엔지니어링 관련 법률
1.5 라이선스 정책에 대한 정리

2장 리버스엔지니어링을 위한 기초 지식
2.1 올리디버거(OllyDBG) 설정 및 사용법
2.2 Jump구 문제어 문제 풀이
2.3 CPU 레지스터와 어셈블리 언어, 진수 변환
2.3.1 진수 변환 | 2.3.2 CPU 레지스터 | 2.3.3 어셈블리 언어
2.3.4 상황별 어셈블리 명령어
2.4 WinApi 분석을 통한 문제풀이
2.5 매뉴얼 Unpack과 Back To User 모드
2.6 키젠(KeygenMe) 문제 풀이를 통한 스택과 콜링컨벤션의 이해
2.7 KeyFile 체크 문제 풀이와 바이너리 수정
2.8 nag 제거 문제를 통한 PE 구조의 이해

3장 리버스엔지니어링 관련 툴
3.1 툴 사용하기
3.2 시스템 모니터링 툴
3.2.1 Filemon | 3.2.2 Regmon | 3.2.3 TcpView
3.2.4 Procexp
3.3 디스어셈블러
3.3.1 IDA 설치 | 3.3.2 메뉴 구성과 IDA 사용 방법 | 3.3.3 디버깅
3.4 IDA에서 for문 분석하기
3.5 IDA에서 if문 분석하기
3.6 크로스레퍼런스 기능과 지뢰찾기 분석
3.7 디컴파일러
3.7.1 플래쉬 디컴파일러(sothink SWF Decompiler)
3.7.2 닷넷 프로그램 디컴파일러(Reflector)
3.7.3 델파이 디컴파일러(DeDe) | 3.7.4 자바 디컴파일러(JAD)
3.8 메모리 패치
3.8.1 티서치 | 3.8.2 치트엔진
3.9 바이너리 분석
3.9.1 PEiD | 3.9.2 리소스해커 | 3.9.3 Strings
3.9.4 Dependency Walker와 DumpBin
3.10 언패커
3.10.1 Universal Extractor | 3.10.2 VMUnpacker
3.11 리빌더
3.12 헥스에디터
3.13 루트킷 탐지
3.13.1 GMER | 3.13.2 IceSword
3.14 네트워크 모니터링 툴
3.15 가상 머신
3.15.1 VMWare | 3.15.2 VirtualBox

4장 악성 코드 분석
4.1 악성 코드란?
4.1.1 파일 바이러스 | 4.1.2 웜 | 4.1.3 트로이목마
4.1.4 백도어 | 4.1.5 스파이웨어
4.2 악성 코드 감염 경로
4.2.1 메신저에서의 파일 전송 | 4.2.2 이메일에서의 파일 다운
4.2.3 의심스러운 사이트에서의 ActiveX 설치
4.2.4 P2P 사이트에서의 파일 다운 | 4.2.5 인터넷에서 감염된 파일 다운
4.3 악성 코드 분석(IRC Bot)

5장 안티 디버깅
5.1 안티 디버깅이란?
5.2 안티 디버깅의 종류
5.3 IsDebuggerPresent
5.4 Microsoft Visual Studio 2005에서 컴파일 및 실행
5.5 Microsoft Visual Studio 6.0에서 컴파일 및 실행
5.6 IsDebuggerPresent 우회 방법
5.7 IsDebugged
5.8 IsDebugged 우회 방법
5.9 NtGlobalFlags
5.10 NtGlobalFlags 우회 방법
5.11 CheckRemoteDebuggerPresent
5.12 CheckRemoteDebuggerPresent 우회 방법
5.13 FindWindow
5.14 FindWindow 우회 방법