关于《黑客反汇编揭密》一书中的一些错误
2006-11-26 11:15
197 查看
P89 int a[2] = { (int)func_1, (int)func_2, (int)func_3 }; 应该是int a[3] = ……
P90 所有 mov [ebp + XXX], YYY 的指令 应该都是“ebp - ”吧
P92 被40101B行的pop弹了出来。 pop在40101A行
P95 jnz short loc_0_401017 应该是jz吧,因为上面是 if ( a )
P210 ; MyProc(a:Byte, b:Word, c:String) 前面代码中函数原型是MyProc(a:Word, b:Byte, c:String)
P237 表9 FIST destination ……
FISTP destination …… 这两条指令和它们的描述反了
P237 一个双精度型或者长双精度型数据都要占据多于一个“字节”的空间 我觉得应该是“字”比较合适
P243~244 fstp [ebp+0ch+var_4]
fstp [ebp+0ch+var_C]
fld [ebp+0ch+var_4]
fadd [ebp+0ch+var_C] 我觉得应该都是“esp+0ch+……”
P252 void __stdcall demo_3(int a, int b, int c) P254说demo_3是__cdecl类型,而且反汇编代码也说明了这一点
P252 zzz->demo();
zzz->demo_2();
zzz->demo_3(); 这三个函数调用都没有传递参数
P303 aWednesday db 'Wednesday',0,0,…… 以及后面几行中0的数量都不对,应该符合static char x[7][16]的声明吧
P304 列表121的源程序和列表122的反汇编程序对应不上,122中有个Sum函数,而121中根本没有
P332 ;4. printf("%x + %x= %x", a, b, b-a) 应该是printf("%x - %x= %x", a, b, b-a)
P337 call myfunc
……
call _myfunc_2 两个函数的顺序不对,见P336 myfunc(a+b, myfunc_2(c))和P338的反汇编
P341 int c; c = *a; *b = *a; *b = c; 应该是int c; c = *a; *a = *b; *b = c;
P364、P365 ;三个最低位留在ECX寄存器中,其他位则置零 应该是“两个最低位”,因为指令是 " and ecx, 3 "
P370 loc_4010C9: ; CODE XREF: _main+35…… 标号loc_4010C9的位置不对,应该在指令"jz short loc_4010D8"后面
P372 ;字符串"Hello, Sailor!"拷贝给局部变量 char var_20[14]。 该字符串有14个有效字符(5+1+1+6+1),如果拷贝给char var_20[14],那结尾符的存放就越界了
P382 所有(a!=b)都错了 应该写成(a!=0)
P383 图24上面 ((a==b) && (a!=0)) 应该是((a==b) || (a!=0))
P389 表22 第三行 SETAG SETNC SETNB SETAG 应该是 SETAE
P412 if (a<0x666) zzz=0x200 else zzz=0x300 if (a<0x666) zzz=0x100 else zzz=0x300
P414、P415 cmp eax, 1 cmp eax, 0
P451 loc_401097: ;有前置条件的循环 应该是“有后置条件的循环”
P510 第一行 || strcmp(&name[0], "KPNC/n" ))) 如果要比较密码的话逻辑应该是 && !strcmp(&name[0], "KPNC/n" )))
P515 倒数第三行 loop 000001031 loop 00401031
P516 jne 000001021 jne 00401021
call 000001056 call 00401056
P90 所有 mov [ebp + XXX], YYY 的指令 应该都是“ebp - ”吧
P92 被40101B行的pop弹了出来。 pop在40101A行
P95 jnz short loc_0_401017 应该是jz吧,因为上面是 if ( a )
P210 ; MyProc(a:Byte, b:Word, c:String) 前面代码中函数原型是MyProc(a:Word, b:Byte, c:String)
P237 表9 FIST destination ……
FISTP destination …… 这两条指令和它们的描述反了
P237 一个双精度型或者长双精度型数据都要占据多于一个“字节”的空间 我觉得应该是“字”比较合适
P243~244 fstp [ebp+0ch+var_4]
fstp [ebp+0ch+var_C]
fld [ebp+0ch+var_4]
fadd [ebp+0ch+var_C] 我觉得应该都是“esp+0ch+……”
P252 void __stdcall demo_3(int a, int b, int c) P254说demo_3是__cdecl类型,而且反汇编代码也说明了这一点
P252 zzz->demo();
zzz->demo_2();
zzz->demo_3(); 这三个函数调用都没有传递参数
P303 aWednesday db 'Wednesday',0,0,…… 以及后面几行中0的数量都不对,应该符合static char x[7][16]的声明吧
P304 列表121的源程序和列表122的反汇编程序对应不上,122中有个Sum函数,而121中根本没有
P332 ;4. printf("%x + %x= %x", a, b, b-a) 应该是printf("%x - %x= %x", a, b, b-a)
P337 call myfunc
……
call _myfunc_2 两个函数的顺序不对,见P336 myfunc(a+b, myfunc_2(c))和P338的反汇编
P341 int c; c = *a; *b = *a; *b = c; 应该是int c; c = *a; *a = *b; *b = c;
P364、P365 ;三个最低位留在ECX寄存器中,其他位则置零 应该是“两个最低位”,因为指令是 " and ecx, 3 "
P370 loc_4010C9: ; CODE XREF: _main+35…… 标号loc_4010C9的位置不对,应该在指令"jz short loc_4010D8"后面
P372 ;字符串"Hello, Sailor!"拷贝给局部变量 char var_20[14]。 该字符串有14个有效字符(5+1+1+6+1),如果拷贝给char var_20[14],那结尾符的存放就越界了
P382 所有(a!=b)都错了 应该写成(a!=0)
P383 图24上面 ((a==b) && (a!=0)) 应该是((a==b) || (a!=0))
P389 表22 第三行 SETAG SETNC SETNB SETAG 应该是 SETAE
P412 if (a<0x666) zzz=0x200 else zzz=0x300 if (a<0x666) zzz=0x100 else zzz=0x300
P414、P415 cmp eax, 1 cmp eax, 0
P451 loc_401097: ;有前置条件的循环 应该是“有后置条件的循环”
P510 第一行 || strcmp(&name[0], "KPNC/n" ))) 如果要比较密码的话逻辑应该是 && !strcmp(&name[0], "KPNC/n" )))
P515 倒数第三行 loop 000001031 loop 00401031
P516 jne 000001021 jne 00401021
call 000001056 call 00401056
相关文章推荐
- 关于UTF-8的BOM标识以及非法字符65279错误的一些记录
- 关于php Soap一些错误。
- android初学日记——关于一些使用eclipse下载到手机时出现的错误
- 一些matlab中关于ezplot容易犯的小错误
- 文摘:关于LNK2001错误的一些总结
- 关于javaweb中遇到的一些错误整理
- 关于项目中出现一些非代码造成的错误
- 关于popupwindow无法正常弹出的一些低级错误
- 关于一些Tomcat的错误
- 转载:) 关于spring、hibernate、struts的一些错误问题 不断补充中(靠自己了)
- 关于gcc编译错误expected expression before token的一些想法
- 关于LNK2001错误的一些总结 ---ZT
- 有关于profile或membership的一些错误处理~
- OpenCV关于稀疏光流跟踪的演示程序以及一些错误提示
- 关于si4438以往犯的一些错误
- 关于MyBatis一些小错误,元素内容必须由格式正确的字符数据或标记组成.
- 黑马程序员--关于一些错误的解决办法
- 关于Tomcat一些启动错误的解决方法
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- linux内核源代码学习(3)关于一些数据结构和一个理解 错误