구)홈페이지 오탈자 보기
Windows 구조와 원리: OS를 관통하는 프로그래밍의 원리

 

페이지오탈자 내용등록일
0

(표지제일 뒷장)

예제소스 www.hanbitbook.co.kr/exam/1396
=> www.hanbitbook.co,kr/example/1396
==>
확인완료

2006-10-251
0

(표지제일 뒷장)

예제소스 www.hanbitbook.co.kr/exam/1396
=> www.hanbitbook.co,kr/example/1396
==>
확인완료

2006-10-251
32

(p 32 하단에서 6번째줄)

오타지 잘 모르겠지만.. 
ds:1034번지 라고 나온게 1032가 아닌지???
==>
<저자분께 확인하여 오타임을 확인하였습니다. 감사합니다>

네. 안녕하세요..

32페이지의 내용은 오타입니다..

아래는 제 홈페이지에 올라가 있는 이와 관련한 오타 내용입니다.



(p32) 32페이지 mov ax, word ptr 1032h라는 명령은 현재 데이터 세그먼트의 오프셋 1034H번지에서 1034 ==> 1032

2006-10-251
380

(80쪽 표 83 id)

80쪽 5번째 줄

83 id        ADD r/m32, imm32

=>

83 /0 ib    ADD r/m32, imm8

2007-10-151
391

(p 91 표 설명)

03에 밑줄이 가도록 표시한 것이 맞습니다. 그러므로, 수정하지 않아도 됨을 알려드립니다.(2006년 12월 11일 저자 확인)

2006-11-232
391

(p91 표)

확인 결과, 오탈자가 맞습니다.
개정판을  편집하며, 그림이 바뀐듯 합니다.

이석현 님이 말씀하습니다.
91페이지의 맨 첫그림에서, 가로줄은 아래로 한줄 내린 [--][--]부분에 줄이 들어가 있어야 합니다.

오탈자 확인 감사합니다. :)

2007-01-112
101

((p101) 그림 아래 소스 코드)

sum :
       mov  eax, dword ptr [esp + 0x8]
       add   eax, dword ptr [esp + 0xc]

로 되어 있는 것은  본문에도 나와 있듯이 ESP + 0x4는 첫번째 파라미터를 ESP + 0x8은 두번째 파라미터를 나타내는 것이니 만큼

첫번째 파라미터를 mov해 두번째 파라미터와 add 해야하는 것이니만큼 다음과 같이 수정되야 하지 않나요.

sum :
        mov   eax, dword ptr [esp + 0x4]
        add    eax, dword ptr [esp + 0x8]
==>
저자가 오타임을 확인하였습니다(2006년 6월 22일).
좋은 지적 감사합니다.

2006-10-251
4102

(102)

위 코드의 경우 esp+0xC가 처음에는 두번째 파라미터를 나타내는 것이었으나, 중간에 스택의 내용이 변경됨으로써 첫 번째 파라미터를 가리키는 의미로 바뀌게 될 것이다..

==>

위 코드의 경우 esp+0x8이 처음에는 두번째 파라미터를 나타내는 것이었으나, 중간에 스택의 내용이 변경됨으로써 첫 번째 파라미터를 가리키는 의미로 바뀌게 됩니다.

2007-08-291
4102

(p102,p106)

page102쪽에 스택그림에 대한 부분과 page106쪽에 스택그림에 대한 부분에 EBP화살표 부분이 다릅니다. EBP 화살표부분의 상이한 위치때문에 변위값들도 다르게 나와있으므로 확인 부탁드립니다.
제 생각으론 102쪽에 나와있는 그림이 올바르다고 생각합니다.

<확인중>

2007-01-251
5142

(142페이지)

DWORD 크기의 오브젝트 헤더(Object Header)와 

==>

DWORD 크기의 오브젝트 헤더 포인트(Object Header Point)와 


[질문 '2'에 대한 저자의 답변]
32bit aligned되면, 주소값이 0 , 8 , 16 .. 이런 식으로 증가하며 주소가 나가죠. 따라서 2진수로 하면 0000, 1000 , 2000, 3000 ,... 이런 식이  됩니다. 따라서 하위 3bit를 다른 목적으로 쓸수 있는 것이며, 상의 1비트는 항상 커널 레벨 주소이이기 1로 세팅되기에 다른 목적으로 사용이 가능한것입니다. (즉 오류가 아닙니다.)

2009-07-141
5167

(p167 하단 그림)

아래 SEH Chain 그림에서 

맨위 Thread Information Bloc (FS:[0]) 칸 밑에

EXCEPTION_REGISTRATIN* -> EXCEPTION_REGISTRATION*
(우측그림도 마찬가지)

2007-01-082
7242

(242페이지 맨 아래 블럭)

[저자의 답변]
이벤트 object가 자동으로 reset되도록 하였다 할지라도, 내부적으로 해당 이벤트를 대기하고 있는 쓰레드가 여러개 일경우 이 리스트를 찾아 해당 쓰레드들은 모두 깨워준 상태로 바꾸어 준후 unsignaled상태가 되며, 독자께서 생각하시는 것처럼 하나의 쓰레드만 깨우고 unsignaled되지는 않습니다.

2009-07-161
9장281

(p281 마지막문단)

아래 내용은 탈자가 아니며, 책의 내용이 맞는 것입니다.

RPT은 마지막 2비트로써 11이므로 3이되며, 그다음 비트 0은 TI비트

그리고 나머지 왼쪽의 2비트 11이 바로 Index비트로써, 3의 값을 나타내 주는 것입니다.


----- 아        래-----------------

마지막문단 두번째줄 중반이후에

"인덱스 값이 3임을 나타낸다" 

이를 

"인덱스 값이 1임을 나타낸다" 로 바꿔야 할 듯 합니다.

0x1B = 11011b 

RPL은 오른쪽 3비트 011 -> 3 맞음

TI는 그다음비트 1 -> GDT 사용함 맞음

마지막 남은게 1 -> 인덱스=1 인데

인덱스가 3이라고 책에 나와있네요

3이려면 세그먼트레지스터가 0x3B(or 111011b) 이어야 하겠죠?

확인부탁드립니다.^^ 


2007-01-052
12376

(p.376 맨 아래 문단)

그림 아래의 본문에서,

왼쪽 -> 오른쪽

오른쪽 -> 왼쪽

2006-12-042
14445

(p.445 My_DriverEntry() 함수)

BEGINE_WIN_VER
-->
BEGIN_WIN_VER

2006-12-042
8534

(p534 맨위)

IDA는 재귀적이라 봐도 되지만

Ollydbg(올리디버거)같은 경우 선형(linear)입니다.

다만 instruction의 중간으로 jmp했을 경우

그곳에서부터 다시 선형으로 해석을 시작하기 때문에

보완된 선형이라 볼 수 있습니다.

2007-01-171