리버싱 핵심 원리 (악성 코드 분석가의 리버싱 이야기)

리버싱 핵심 원리 (악성 코드 분석가의 리버싱 이야기)

$51.32
Description
리버싱 기술의 핵심 원리를 한 권에 담았다!
악성 코드 분석가의 리버싱 이야기『리버싱 핵심 원리』. 프로그램의 내부를 깊이 들여다보고 조작할 수 있는 기법인 ‘리버싱’에 필요한 핵심 원리를 50여개 장을 통해 꼼꼼하게 설명한 책이다. 리버싱 기술의 단순한 소개에 그치지 않고, 각 기술의 핵심적인 원리를 깨닫게 하는 데 목표를 두고 있다. 무엇보다 저자 이승원이 안철수 연구소에서의 오랜 경험을 토대로 직접 작성한 다양한 코드는 물론 리버서라면 꼭 알아야 할 다양한 리버싱 기법을 상세하게 소개하여 리버서를 꿈꾸는 개발자는 물론 실무를 경험해본 모두에게 도움을 준다. 이를 통해 기본기를 튼튼하게 다지는 것은 물론, 시간이 흘러도 가치가 변하지 않는 기술의 진수를 얻을 수 있다.
저자

이승원

저자이승원은AhnLab에서악성코드를분석하고,리버싱전문블로그를운영합니다.리버스엔지니어링을접한순간부터그황홀한매력에빠져들었습니다.이멋진기술을널리전파시키고다양한분야에활용하는것에관심이많습니다.독서와공상을좋아하고,늘새로운도전을꿈꾸고있습니다.

목차

1부기초리버싱

1장ReversingStory
1.1.ReverseEngineering(RE)
1.2.ReverseCodeEngineering(RCE)
1.2.1.리버싱(분석)방법
1.2.2.SourceCode,HexCode,AssemblyCode
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장HelloWorld!리버싱
2.1.HelloWorld!프로그램
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.“HelloWorld!”문자열패치
2.5.1.패치
2.5.2.문자열을패치하는두가지방법
2.6.마무리

3장LittleEndian표기법
3.1.바이트오더링49
3.1.1.리틀엔디안&빅엔디안
3.1.2.OllyDbg에서리틀엔디안확인

4장IA-32Register기본설명
4.1.CPU레지스터란?
4.1.1.레지스터에대해서알아야하는이유
4.2.IA-32의레지스터
4.2.1.Basicprogramexecutionregisters
4.3.마무리

5장Stack
5.1.스택
5.1.1.스택의특징
5.1.2.스택동작예제

6장abexcrackme#1분석
6.1.abex’crackme#1
6.1.1.Startdebugging
6.1.2.코드분석
6.2.크랙
6.3.스택에파라미터를전달하는방법
6.4.마무리

7장StackFrame
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장abexcrackme#2
8.1.abex’crackme#2실행
8.2.VisualBasic파일특징
8.2.1.VB전용엔진
8.2.2.N(Native)code,P(Pseudo)code
8.2.3.EventHandler
8.2.4.undocumented구조체
8.3.Startdebugging
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장ProcessExplorer-최고의작업관리자
9.1.ProcessExplorer
9.2.구체적으로뭐가좋은거죠?
9.3.sysinternals

10장CallingConvention
10.1.CallingConvention
10.1.1.cdecl
10.1.2.stdcall
10.1.3.fastcall

11장Lena’sReversingforNewbies
11.1.실행
11.2.분석
11.2.1.목표(1)-메시지박스제거!
11.2.2.패치(1)-메시지박스제거
11.2.3.목표(2)-RegistrationCode찾기
11.3.마무리

12장도대체리버싱을어떻게공부해야하나요?
12.1.ReverseEngineering(RE)
12.1.1.모든공부에는‘목표’가있어야합니다.
12.1.2.‘긍정적인마인드’를가지세요.
12.1.3.‘재미’를느껴야합니다.
12.1.4.‘검색’을생활화해야합니다.
12.1.5.제일중요한건‘실천’입니다.
12.1.6.‘느긋한마음’을가지세요.

2부PEFileFormat

13장PEFileFormat
13.1.Introduction
13.2.PEFileFormat
13.2.1.기본구조
13.2.2.VA&RVA
13.3.PE헤더
13.3.1.DOSHeader
13.3.2.DOSStub
13.3.3.NTHeader
13.3.4.IMAGE­NT­HEADERS-IMAGE­FILE­HEADER
13.3.5.IMAGE­NT­HEADERS-IMAGE­OPTIONAL­HEADER32
13.3.6.
13.4.RVAtoRAW
13.5.IAT
13.5.1.DLL
13.5.2.IMAGE­IMPORT­DESCRIPTOR
13.5.3.notepad.exe를이용한실습
13.6.EAT
13.6.1.IMAGE­EXPORT­DIRECTORY
13.6.2.kernel32.dll을이용한실습
13.7.AdvancedPE(PortableExecutable)
13.7.1.PEView.exe
13.7.2.PatchedPE
13.8.마무리

14장실행압축
14.1.데이터압축
14.1.1.비손실압축
14.1.2.손실압축
14.2.실행압축
14.2.1.패커
14.2.2.프로텍터
14.3.실행압축테스트
14.3.1.notepad.exe와notepad­upx.exe파일비교

15장UPX실행압축된notepad디버깅
15.1.notepad.exe의EPCode
15.2.notepad­upx.exe의EPCode
15.3.UPX파일트레이싱
15.3.1.OllyDbg의트레이스명령어
15.3.2.루프#1
15.3.3.루프#2
15.3.4.루프#3
15.3.5.루프#4
15.4.UPX의OEP를빨리찾는방법
15.4.1.POPAD명령어이후의JMP명령어에BP설치
15.4.2.스택에하드웨어브레이크포인트(HardwareBreakPoint)설치
15.5.마무리

16장BaseRelocationTable
16.1.PE재배치
16.1.1.DLL/SYS
16.1.2.EXE
16.2.PE재배치발생시수행되는작업
16.3.PE재배치동작원리
16.3.1.BaseRelocationTable
16.3.2.IMAGE­BASE­RELOCATION구조체
16.3.3.BaseRelocationTable의해석방법
16.3.4.실습

17장실행파일에서.reloc섹션제거하기
17.1..reloc섹션
17.2.reloc.exe
17.2.1..relocSectionHeader정리
17.2.2..reloc섹션제거
17.2.3.IMAGE­FILE­HEADER수정
17.2.4.IMAGE­OPTIONAL­HEADER수정
17.3.마무리

18장UPackPE헤더상세분석
18.1.UPack설명
18.2.UPack으로notepad.exe실행압축하기
18.3.Stud­PE이용
18.4.PE헤더비교
18.4.1.notepad.exe(원본)의PE헤더
18.4.2.notepad­upack.exe(실행압축)의PE헤더
18.5.UPack의PE헤더분석
18.5.1.헤더겹쳐쓰기
18.5.2.IMAGE­FILE­HEADER.SizeOfOptionalHeader
18.5.3.IMAGE­OPTIONAL­HEADER.NumberOfRvaAndSizes
18.5.4.IMAGE­SECTION­HEADER
18.5.5.섹션겹쳐쓰기
18.5.6.RVAtoRAW
18.5.7.ImportTable(IMAGE­IMPORT­DESCRIPTORarray)
18.5.8.IAT(ImportAddressTable)
18.6.마무리

19장UPack디버깅-OEP찾기
19.1.OllyDbg실행에러
19.2.디코딩루프
19.3.IAT셋팅
19.4.마무리

20장인라인패치실습
20.1.인라인패치
20.2.실습-Patchme
20.3.디버깅-코드흐름살펴보기
20.4.코드구조
20.5.인라인패치실습
20.5.1.패치코드를어디에설치할까?
20.5.2.패치코드만들기
20.5.3.패치코드실행하기
20.5.4.결과확인

3부DLLInjection

21장Windows메시지후킹
21.1.훅
21.2.메시지훅
21.3.SetWindowsHookEx()
21.4.키보드메시지후킹실습
21.4.1.실습예제HookMain.exe
21.4.2.소스코드분석
21.5.디버깅실습
21.5.1.HookMain.exe디

출판사 서평

리버서라면꼭알아야할핵심원리를모두담았다!

리버싱이란프로그램의내부를깊이들여다보고조작할수있는기법이다.이는우리가흔히사용하는상용프로그램등에도가능하기때문에해킹의방법으로응용될수있다.하지만역시리버싱은일명‘리버서’라불리는악성코드분석가들의특기이기도하다.무엇보다리버싱기법은해커와보안전문가의대결로만이용되는것은아니다.리버싱을잘활용하면개발/테스트단계에서미처발견하지못한버그나취약점도파악할수있고,파일이나메모리에직접접근하여문제를해결할수있다.또한전혀새로운기능을추가해프로그램의기능을향상시킬수도있어매우유용하다.
이책은이런마법같은일들이가능한‘리버싱’에필요한핵심원리를50여개장을통해꼼꼼하게설명한다.무엇보다저자가오랫동안안철수연구소에서경험을토대로직접작성한다양한코드는물론리버서라면꼭알아야할다양한리버싱기법을상세하게소개하기때문에리버서를꿈꾸는개발자는물론실무를경험해본모두에게도움을준다.
무엇보다이책은리버싱기술과그동작원리를설명하는데집중한다.즉리버싱기술의단순한소개에그치지않고,각기술의핵심적인원리를깨닫게하는데목표를두고있다.이를통해기본기를튼튼하게다지는것은물론,시간이흘러도가치가변하지않는기술의진수를얻을수있다.
여러분이리버싱세계를여행하고싶다면,이책이친근한가이드가되어줄것이다!

주요내용

IA-32Register
디버깅
크랙
PEFileFormat
실행압축
BaseRelocationTable
인라인패치실습
Windows메시지후킹
DLLInjection
DLLEjection
CodeInjection
API후킹
‘스텔스’프로세스
글로벌API후킹
64bitComputing
ASLR
SessioninKernel6
TEB
PEB
SEH
IA-32Instruction
안티디버깅

리버서가되기를원하는가?'개발자인나에게도필요한가?'라는질문을가지고있다면,이책은당신의확실한동반자가될것이다.
-안철수연구소정관진책임연구원/패킷인사이드블로그운영자

보안은다양한분야의폭넓고깊이있는지식과전문가를필요로하는데,이책은보안분야전문가로서의첫걸음을가볍게시작할수있도록도움을줄것이다.
-안철수연구소중국법인분석센터장,한창규