我目前正在反转 Windows 驱动程序,以便为 DVB 卡编写 Linux 兼容的驱动程序,但我遇到了一个我可以解决的小问题,但如果可能的话,我想让它更正。
有一个函数,该函数的一部分将 256 字节的 PCI 配置空间读入已在堆栈上分配的本地缓冲区。反编译显示输出为:
unsigned __int16 configSpaceBuffer[128];
.... SNIP ...
configSpace->vtable->tmRegisterAccess_ConfigSpace__tmIGetReg(
configSpace,
&address,
4,
configSpaceBuffer,
256u,
0)
_this->field_4A = v74;
_this->field_4C = *(unsigned __int16 *)configSpaceBuffer;
_this->field_4E = v75;
_this->field_50 = v77;
_this->field_52 = v76;
是否可以修复检测到的函数变量以显示以下内容?
_this->field_4A = configSpaceBuffer[0];
_this->field_4C = configSpaceBuffer[1];
_this->field_4E = configSpaceBuffer[2];
_this->field_50 = configSpaceBuffer[6];
_this->field_52 = configSpaceBuffer[8];