能力值:
( LV4,RANK:50 )
|
-
-
26 楼
P187 L 12 D1 是把this mov到rax寄存器不是rcx 原文:mov rax,[rsp+40h] ;rcx=this 更正:mov rax,[rsp+40h] ;rax=this
最后于 2018-11-13 13:53
被wx_clay编辑
,原因:
|
能力值:
( LV4,RANK:50 )
|
-
-
27 楼
achillis
P221 L-4 D1
原文:if GetLastErrorERROR_ALREADY_EXISTS
更正: if GetLastError() != ERROR_ALREADY_EXIS ...
if (GetLastError() != ERROR_ALREADY_EXIST)这样才对吧
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
P408 L-3 D1 原文:ASCII码字符是“PE00”, 更正:ASCII码字符是“PE\0\0”,
最后于 2018-11-17 18:38
被jgs编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
P808 L23 D1 原文:UnHookAPI(); 更正:删除这一行代码
最后于 2018-11-17 19:27
被jgs编辑
,原因:
|
能力值:
( LV4,RANK:50 )
|
-
-
30 楼
P322 L-17 D1 原文:ExceptionRecord=esp+8 更正 ExceptionRecord=[esp]
|
能力值:
(RANK:350 )
|
-
-
31 楼
sojrs
p557 L-8 d1原文: mov esi ,dword ptr [es ...
代码没错的:
mov esi, dword ptr [ebx+3Ch] // e_lfanew,获得的esi值为相对偏移 mov esi ,dword ptr [esi+ebx+78h] //EATAddr,此处ebx为DLL基址
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
1111
|
能力值:
( LV9,RANK:610 )
|
-
-
33 楼
wx_clay
P322 L-17 D1
原文:ExceptionRecord=esp+8
更正 ExceptionRecord=[esp]
我是作者,这一处并没有错误,原文的意思说的很明确,_EXCEPTION_POINTERS后面跟EXCEPTION_RECORD结构,所以EXCEPTION_RECORD的位置是esp+sizeof(_EXCEPTION_POINTERS),也就是esp+8。你结合后面看一下就知道了
最后于 2018-11-23 19:51
被achillis编辑
,原因:
|
能力值:
( LV4,RANK:50 )
|
-
-
34 楼
achillis
wx_clay
P322 L-17 D1
原文:ExceptionRecord=esp+8
更正 ExceptionRecord=[esp]
我是作 ...
_EXCEPTION_POINTERS包含EXCEPTION_RECORD结构和ContextRecord结构。并不是之后,所以不需要+8
最后于 2018-11-25 17:19
被wx_clay编辑
,原因:
|
能力值:
( LV9,RANK:610 )
|
-
-
35 楼
EXCEPTION_POINTERS Structure
typedef struct _EXCEPTION_POINTERS {
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
注意看上面的定义, _EXCEPTION_POINTERS结构包含的是两个结构体指针,而不是两个结构体。 此时,从栈顶往下依次是 _EXCEPTION_POINTERS结构体、EXCEPTION_RECORD结构体、CONTEXT结构体 在本例中, esp = 12fcc8 , _EXCEPTION_POINTERS结构体的起始地址是esp, EXCEPTION_RECORD结构体的起始地址是esp+sizeof( _EXCEPTION_POINTERS ),也就是12fcc8 + 8 = 12fcd0,这与栈顶的 _EXCEPTION_POINTERS结构体的第一个成员是对应的,此时满足 esp +8 = [esp] ,所以原文没有写错。
我本来要表达的意思是这几个结构在内存布局位置上的相互关系,所以使用的是esp+8,而不是[esp],虽然它们确实是相等的。
最后于 2018-11-25 20:58
被achillis编辑
,原因:
|
能力值:
( LV12,RANK:290 )
|
-
-
36 楼
请问书中给出的src为什么放到自己的电脑上就不能编译了(我用的VS2017,经常更新的),虽然随书文件已经给出的编译好的版本,但是我还是手贱想自己做一遍^_^
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
最后于 2018-12-1 16:23
被找到组织了编辑
,原因:
|
能力值:
(RANK:350 )
|
-
-
38 楼
pureGavin
请问书中给出的src为什么放到自己的电脑上就不能编译了(我用的VS2017,经常更新的),虽然随书文件已经给出的编译好的版本,但是我还是手贱想自己做一遍^_^
复制出来到硬盘里,并去除只读属性,不要ISO文件里操作
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
eaglezy
P51 L-6 D1原文:pa $ra更正:pa @$raP104 表4.1原文:stdcall允许使用VARARG更正:不允许
这个他的注释写了,可以用或是不用
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
P314 L14 在64位模式下则为16字节
最后于 2018-12-2 00:08
被无聊分子编辑
,原因:
|
能力值:
( LV12,RANK:290 )
|
-
-
41 楼
kanxue
复制出来到硬盘里,并去除只读属性,不要ISO文件里操作
不是这种错误,这里要吐槽VS2017一下,如果VS2017没有装在C盘的话,所有的引用目录全都是乱的,都要自己配置(不知道装在C盘会不会乱,要不是我SSD太小。。。o(╥﹏╥)o),不过为什么书中的大部分的代码都是用VC6.0编译的??不是有更新的环境么??
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
P367 原文:线程异常回调函数的调用约定是_cdecel 更正:
线程异常回调函数的调用约定是
_cdecl
最后于 2019-5-5 18:48
被那里有阳光编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
P201 L5 D1 //文字的行数,不算上代码 原文:因此,可以将F2函数的功能看成将输入的十进制数转换成十六进制数。 更正:因此,可以将F2函数的功能看成将输入的十进制数与0x1234异或得到的数。 结合该段上面的F2代码,F2函数功能应该是将传入的十进制字符串转换为整型并与0x1234异或。
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
P125 L6 D1 原文: 这个跳转是由低地址向高地址区域走的 更正: 这个跳转是由高地址向低地址区域走的
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
P150 L-14 D1
原文: 从cast表中获取case语句块的代码偏移
更正:
从case表中获取case语句块的代码偏移
最后于 2018-12-14 08:29
被pentagram编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
P214 L-19 D1 原文: 写一个本地服务端模来拟服务器。 更正: 写一个本地服务端来模拟服务器。
|
能力值:
( LV3,RANK:22 )
|
-
-
47 楼
P301 L-5 D1 原文:FuncAddr = ([KeServiceDescriptortable+index*4]>>4 + KeServiceDesciptortable) 更正:FuncAddr = ([KeServiceDescriptortable+index*4]<<4 + KeServiceDesciptortable)
答复:书中没错,因为存取的时候将偏移左移了4位,所以读取的时候需要右移4位恢复其真实的偏移值。 by kanxue
最后于 2019-10-26 21:19
被kanxue编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
P501 L15 D1 原文:PrintfChar(&ch2); 更正:PrintfChar(pChar);
最后于 2019-10-26 12:06
被kanxue编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
P167 L13 D1 原文:优化公式2:如果x≥0,则x%2ⁿ = x&(2ⁿ - 1);如果x<0,则x%2ⁿ = (x + (2ⁿ - 1)&(2ⁿ - 1)) - (2ⁿ -1),示例如下。 更正:优化公式2:如果x≥0,则x%2ⁿ = x&(2ⁿ - 1);如果x<0,则x%2ⁿ = ((x + (2ⁿ - 1)) & (2ⁿ - 1)) - (2ⁿ -1),示例如下。
|
能力值:
( LV1,RANK:0 )
|
-
-
50 楼
P200 C语言代码描述 L9 原文:kl += ( ch > 'Z' ) ? ( ch - 32 ) : ch; 更正:kl += ( ch >= 'Z' ) ? ( ch - 32 ) : ch;
|
|
|