[서적] 리버스엔지니어링 : 역분석 구조와 원리
서적 출간 소식입니다.
국내에서도 리버싱을 full 로 다룬 첫 서적이 나올 것 같네요 ^^
http://simples.co.kr/ 에서 esniper 님께서 리버싱관련 서적을 다음달 초에 내신다고 합니다.
아래는 목차고요. 목차에 대해 어느 보안 포럼에서는 이렇다 저렇다 논란 이 있긴 하지만
아직 알맹이도 보지 못한 상황에서 내용에 대해 왈가불가 하는 것 보다 리버싱 전문 서적의
첫 출간이라는 것에 더 큰 의의를 두어야 하지 않을까 싶네요.
(목차를 보며 그나마 할 수 있는 얘기는 코드 한줄한줄에 대한 Tracing 보다는
리버싱이라는 것을 다룰 때 포괄적으로 알아야 할 지식과 개념, 용어, Tool 등을
정리해놓았다는 생각이 정도? )
리버싱에 관심 있으신 분들 한권씩 지르세요 ^^;
리버싱 잘하시는분들도 지르세요ㅎㅎ 인식이 많이 높아지긴 했지만 리버싱은 아직도 희귀학문에
속하는 지라 "C++ 일주일이면 쵸큼 잘하게 된다" 이딴 책보다는 아무래도 매출이 적을테니
훌륭한 책을 널리 알리는데 다들 공헌해야 한다고 봅니다 :)
---------------------------------
1장 리버스엔지니어링에 대하여
1 리버스엔지니어링이란 무엇인가?
2 크래커에 의한 피해사례, 개발자들이 주의할 부분
3 리버스엔지니어링의 전망과 취업
4 리버스엔지니어링 관련 법률
5 라이센스 정책에 대한 정리
2장 리버스엔지니어링을 위한 기초지식
1. 올리디버거(OllyDBG) 설정 및 사용법
2. Jump구문제어 문제풀이
3. CPU레지스터와 어셈블리언어, 진수변환
3-1. 진수변환
3-2. CPU 레지스터
3-3. 어셈블리 언어
3-4. 상황별 어셈블리 명령어
4. WinApi 분석을 통한 문제풀이
5. 메뉴얼 Unpack과 Back To User모드
6. 키젠(KeygenMe)문제풀이를 통한 스택과 콜링컨벤션의 이해
7. KeyFile체크문제풀이와 바이너리 수정
8. NAG제거 문제를 통한 PE구조의 이해
3장 리버스엔지니어링 관련 툴
1. 툴을 사용하는 것에 대하여
2. 시스템 모니터링 툴(System-Monitoring Tools)
2-1. Filemon
2-2. Regmon
2-3. TcpView
2-4. Procexp
3. 디스어셈블러(Disassemblers)
3-1. IDA 설치 (Install)
3-2. 메뉴구성과 IDA 사용방법
3-3. 디버깅 (Debugging)
3-4. IDA에서 For문 분석하기
3-5. IDA에서 if문 분석하기
3-6. 크로스레퍼런스 기능과 지뢰찾기 분석
4. 디컴파일러(Decompilers)
4-1. 플래쉬 디컴파일러(sothink SWF Decompiler)
4-2. 닷넷 프로그램 디컴파일러(Reflector)
4-3. 델파이 디컴파일러(DeDe)
4-4. 자바 디컴파일러(JAD)
5. 메모리패치(Memory Patch)
5-1. 티서치(TSearch)
5-2. 치트엔진 (Cheat Engine)
6. 바이너리분석(Binary Analysis)
6-1. PEiD
6-2. 리소스해커
6-3. Strings
6-4. Dependency Walker와 DumpBin
7. 언패커(Unpacker)
7-1. Universal Extractor
7-2. VMUnpacker
8. 리빌더 (Rebuilder) - ImpRec
9. 헥스에디터(Hex-editors) - XVI32와 QuickBe
10. 루트킷탐지(Rootkit Detection)
10-1. GMER
10-2. IceSword
11. 네트워크 모니터링 툴(Network-Monitoring Tool) - Wireshark
12. 가상머신 (Virtual Machine)
12-1. Vmware
12-2. VirtualBox
4장 악성코드 분석
1. 악성코드란?
1-1. 파일 바이러스
1-2. 웜
1-3. 트로이 목마
1-4. 백도어
1-5. 스파이웨어
2. 악성코드 감염경로
2-1. 메신저에서의 파일 전송
2-2. 이메일에서 파일 다운
2-3. 의심스러운 사이트에서의 Activex 설치
2-4. P2P 사이트에서의 파일 다운
2-5. 인터넷에서 감염된 파일 다운
4.3 악성코드 분석 (IRC Bot)
5장 안티디버깅(Anti Debugging)
01. 안티디버깅이란?
02. 안티디버깅의 종류
03. IsDebuggerPresent
04. Microsoft Visual Studio 2005 에서 컴파일 및 실행
05. Microsoft Visual Studio 6.0 에서 컴파일 및 실행
06. IsDebuggerPresent 우회방법
07. IsDebugged
08. IsDebugged 우회방법
09. NtGlobalFlags
10. NtGlobalFlags 우회방법
11. CheckRemoteDebuggerPresent
12. CheckRemoteDebuggerPresent 우회방법
13. FindWindow
14. FindWindow 우회방법
-----------------------------
개인적인 생각이지만, 사실 리버싱 글을 쓰기가 어려운 이유는
target 을 잡기가 힘들기 때문이라고 생각합니다.
無 에서부터 시작하는 일반 프로그래밍과는 달리, 리버싱은 분석을 당할 대상이 반드시 필요하고.
그래서 대상을 선정하기 어렵고, 리버싱 하기 위해 ㅄ될 플그램을 직접 몇개 맹글어야 하고
하지만 리버싱하는거보다 코딩하는게 더 귀찮을 때가 있고
그리고 웬지 사람들 눈에는 UI도 제대로 없는 추리한 애플리케이션보다는
누구나 아는 익숙한 프로그램을 리버싱해주길 원하고
뭐 그런 ㅈ같은 현실 때문에 글 쓰는것, 그리고 크리티컬한 분석내용과 코멘트를 작성하는 것
이매우 힘든 것 같습니다.
이 서적을 쓰신 작가분도 그러한 고민을 하지 않았을까 하고 생각되네요.
리버싱이 P2P 프로그램 속도패치나 상용 S/W 시리얼 크랙 에만 이용되지 않고
좀더 전문적인 학문이 되려면 이같은 작가의 고민이나 현실적인 문제가 좀더 극복되어야 할 것
같습니다.