bmp位图读取与显示

SetDIBitsToDevice中的lpDIBBits是指向存储DIB颜色数据的字节类型数组的指针,在OD跟踪lpDIBBits指向的数据,为啥一直都是0
而且读取位图数据第二次调用GetDIBits中的lpvBits,指向的数据也一直是0
这两个指针都是指向位图数据吧,想问一下如何才能在od找到位图数据,怎么才能正确使用两个指针呀

img

img


谢谢

img

img


这是GetDIBits和SetDIBitsToDevice在IDA中的截图

  1. 可能位图数据本来就是一堆0(比如初始化)
  2. 另外第一张图中,寄存器ESI的值经过调用GetDIBits函数之后有可能被更改。你应该记录下来ESI在调用GetDIBits函数之前的值(即把lpDIBBits指针压栈时的值)。

谢邀
用二进制查看器打开位图文件,与程序读取位图的十六进制对比一下,先看看读取的内容一致不?