목차
1장 어셈블리 언어에 대하여 = 15
1. 어셈블리를 배우려는 이유 = 17
2. 어셈블리를 배우기 전에 알아야 하는 것들 = 21
2.1 디버거는 디버거, 어셈블리는 어셈블리 = 22
2.2 주소에 값을 전달하는 프로그래밍 = 24
2.3 다양한 형태의 소스 = 24
2장 하드웨어와 OS(Operating System)의 이해 = 29
1. 도스에서 메모리 사용 = 30
2. 레지스터(Register) = 33
2.1 범용 레지스터 = 33
2.2 세그먼트 레지스터 = 36
2.3 포인터 레지스터 = 37
2.4 인덱스 레지스터 = 39
2.5 플래그 레지스터 = 39
3. 스택(Stack) = 41
4. 메모리 모델 = 45
4.1 COM(Tiny) 형식의 메모리 모델 = 46
4.2 EXE 형식의 메모리 모델 = 47
4.3 메모리 모델의 종류 = 48
5. 인터럽트(Interrupt) = 49
3장 이제 어셈블리 프로그래밍을 해보자 = 53
1. 어셈블리 소스가 되기 위한 필수적인 지시자들 = 54
1.1 간이 세그먼트 지시자 = 54
1.2 표준 세그먼트 지시자 = 59
2. 어셈블리로 프로그램 만들기 = 63
2.1 해당 하드웨어의 작동 원리를 이해한다 = 64
2.2 메모리 모델을 결정한다 = 65
2.3 주석을 단다 = 66
2.4 주석의 세세한 부분을 코딩한다 = 68
2.5 컴파일 한다 = 72
4장 프로그램을 만들면서 배워보기 = 75
1. 자료형 = 76
1.1 DB 지시자 = 77
1.2 DW 지시자 = 79
1.3 DD 지시자 = 81
1.4 DF 지시자 = 84
1.5 DQ 지시자 = 87
1.6 DT 지시자 = 87
1.7 STRUC 지시자 = 89
1.8 EQU 와 = = 93
2. 자료의 이동, 비교, 반복 = 96
2.1 MOV = 96
2.2 XCHG = 97
2.3 XLAT = 99
2.4 SEG, OFF = 102
2.5 LDS, LEA = 104
2.6 스택, 데이더 이동(PUSH, POP) = 107
2.7 비교 분기, 반복 = 109
2.8 플래그 제어 명령어(LAHF, SAHF, CLD, STD, STI, CLI) = 134
2.9 PORT에 값 입출력(IN, OUT) = 140
2.10 직접 주소 방식과 간접 주소 지정 = 143
3. 데이터 연산 = 146
3.1 일반 산술 명령어 = 146
3.2 비트 단위 논리와 Shift and Rotate 명령어 = 151
4. 프로시저와 매크로 = 170
4.1 매크로(Macro) = 171
4.2 Macro Assembly 6.X의 확장된 콘트롤 제어 명령어들 = 179
4.3 프로시저(Procedure) = 186
5장 하드웨어를 제어하자 = 201
1. 키보드 제어 = 202
1.1 키보드 버퍼에 의한 키보드 제어 = 204
1.2 INT 16h를 이용한 키보드 제어 = 209
2. 마우스 제어 = 224
2.1 INT 33h 0번 Function = 225
2.2 INT 33h 1번 Function = 227
2.3 INT 33h 2번 Function = 229
2.4 INT 33h 3번 Function = 231
2.5 INT 33h 4번 Function = 235
2.6 INT 33h 5, 6번 Function = 238
2.7 INT 33h 7, 8번 Function = 242
2.8 INT 33h 9번 Function = 246
3. 비디오 제어 = 251
3.1 텍스트 모드 = 251
3.2 그래픽 모드 = 256
3.3 INT 10h(화면 모드 제어 인터럽트 서비스) = 261
4. 스피커 제어 = 270
4.1 61H를 이용한 스피커 제어 = 270
4.2 타이머(42h, 43h)를 이용한 스피커 제어 = 272
5. 파일 제어 = 278
5.1 FCB를 사용한 방법(시퀀설 액세스) = 278
5.2 파일 핸들을 사용한 방법 = 289
6. 램상주 기법 = 303
7. PCX 출력과 압축 알고리즘 = 317
6장 고급 언어와의 링크 = 325
1. C와 어셈블리 링크 = 326
1.1 어셈블리 소스를 C 연결 모듈로 만들기 = 327
1.2 스택에 의한 인자 전달 (1) = 333
1.3 스택에 의한 인자 전달 (2) - 축약 파라미터 = 335
2. 터보 파스칼과 어셈블리 링크 = 336
3. 어셈블리 라이브러리 만들기 = 341
4. 인라인 어셈블리(In-Line Assembly) = 345
4.1 Turbo-C = 345
4.2 C++ = 346
4.3 Turbo Pascal 7.0 = 347
7장 암호제거(Crack) 방법과 실체 = 349
1. Crack and Cracker = 351
2. Cracker가 되기 위한 기본 지식과 대상 프로그램의 종류 = 353
2.1 어셈블리 프로그래밍을 어느 정도(?)해야 한다 = 354
2.2 브레이크 포인트(Break Point)를 이해해야 한다 = 355
2.3 메모리 상태에 유의해야 한다 = 358
2.4 T(싱글 스탭 트레이싱)과 P의 활용 = 359
2.5 인내심을 키워야 한다 = 360
2.6 Crack의 방법 = 360
2.7 일반적인 암호 비교 루틴의 종류 = 362
2.8 패치 종류와 방법 = 364
3. Crack과 Cheat 예제들 = 365
3.1 키 입력 비교 분기 예제(Ski or Die) = 365
3.2 디스크 상태 비교 분기 예제(Rampage) = 369
3.3 키보드 입력 비교 분기 예제2(Scorch 1.0) = 373
3.4 메모리 수정 = 376
3.5 Cheat 만들기 1(독수리 탱크) = 383
3.6 Cheat 만들기 2(보그 보글) = 387
3.7 Cheat 만들기 3(xenon2) = 394
4. 디버깅 툴(Soft-Ice 2.80) = 398
5. Craker가 되려는 사람들에게.. = 403