有趣的ReadFile函数

2017-10-10  本文已影响0人  奶糖豆

在win10以下,当调用ReadFile函数的时候,第四个参数有这么一个注释:

LPDWORD lpNumberOfBytesRead,指向一个DWORD类型变量的指针,用来接收读取的字节数。如果下一个参数为NULL,那么一定要传入这个参数。

但是在win10中,微软默默修补了这个问题,所以这个参数为0也不会造成dos问题了。

我们首先做错误的api调用,结果如下:

Paste_Image.png

原因:在win7 kernelbase.dll中,ReadFile函数没有对第四个参数进行严格判断,而直接对句柄hfile进行了判断,如下图:

2.png

接着在调用NtReadFile失败后,赋值一个实际读取的长度ebx,因为ebx传入了0,所以没有地址,所以直接造成了报错。(win10以下版本)

3.png
上一篇 下一篇

猜你喜欢

热点阅读