-
-
[求助][求助]64位内核 遇到 32位结构体
-
发表于:
2015-3-19 15:29
3868
-
32位程序中.结构体为
typedef struct _NSI_PARAMS_ENTRY
{
DWORD dw_unkown0;
DWORD dw_unkown1;
LPVOID lp_moduleid;
DWORD dw_unkown2;
DWORD dw_unkown3;
DWORD dw_unkown4;
NSI_TCP_INFO_ENTRY* ptcp_entry;
DWORD dw_tcp_entry_size;
DWORD dw_unkown5;
DWORD dw_unkown6;
NSI_STATUS_ENTRY* pstatus_entry;
DWORD dw_status_entry_size;
NSI_PROCESS_ENTRY* pprocess_entry;
DWORD dw_process_entry_size;
DWORD dw_tcp_numbers; // + 0x38
}NSI_PARAMS_ENTRY,*PNSI_PARAMS_ENTRY;
但是由 32位程序 传入 64 内核中。
类似的操作是不对的 eg :
NtDeviceIoControlFile(.......,....,PVOID OutBuffer)
{
PNSI_PARAMS_ENTRY pNsi = (PNSI_PARAMS_ENTRY)OutBuffer;
pNsi->dw_tcp_numbers; //这样获取的内容是不对的
*(DWORD*)((DWORD)OutBuffer + 0x38); //这样确实可以的
}
请问这是为什么 ? 是否涉及结构体对齐 ? 该怎么操作 . 谢谢
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)