在汇编语言程序调试中我尝试在记事本中直接加入弹框语句来判断条件句有没有执行:
invoke MessageBox,NULL,offset szText3,NULL,MB_OK
.
然后加着加着发现有点不对劲,比如下面的语句:
.if eax != 0FFFFFFFFh
invoke MessageBox,NULL,offset szText3,NULL,MB_OK
mov @hFile,eax
.
是的,后来我突然意识到函数通常都是用 EAX 来返回的,如果 MessageBox 函数加在 eax 赋值语句前面,那 MessageBox 调用完后就会覆盖掉原 eax 的值,那后面程序就全错了。
.
.
比如后面有如下语句:
invoke InternetReadFile,hInternetFile,addr @lpBuffer,200h,addr @dwBytesToWrite
.break .if (!eax)
.
.
修改后:
invoke InternetReadFile,hInternetFile,addr @lpBuffer,200h,addr @dwBytesToWrite
invoke MessageBox,NULL,offset szText3,NULL,MB_OK
.break .if (!eax)
.
.
这样 就不会 break 了,因为 eax 不是 InternetReadFile 的返回了。
.
.
小小记录一下(^ ~ ^)