首页
社区
课程
招聘
[求助]wow64内核如何获得对齐位数?
发表于: 2016-4-16 10:11 4085

[求助]wow64内核如何获得对齐位数?

2016-4-16 10:11
4085
以NtDeviceIoControlFile(IOCTL_AFD_SEND)为例:
当WS2_32.send 向socket发送消息时,实际调用
NtDeviceIoControlFile(IOCTL_AFD_SEND)
NtDeviceIoControlFile 的 InputBuffer指向结构_AFD_SEND_INFO ;
在结构_AFD_SEND_INFO 有一指针,
当32位进程send时,此指针长4,
当64位进程send时,此指针长8,
请教,内核是如何知道此指针长度的?

Ps: 似乎不是看进程是32位,还是64位的问题,
      我在内核中模拟API: IsWow64Process
         即ZwQueryInformationProcess(-1, ProcessWow64Information, ...)
         总是返回是64位
PPs: 似乎不是看进程是32位,还是64位的 2,
      因为在进程的内核执行中,调用其它内核64位程序,还是还64位方式的
PPPs:是根据 FileHandle 查出来的吗?
typedef struct  _AFD_SEND_INFO {
	PAFD_WSABUF                 BufferArray;
	ULONG                       BufferCount;
	ULONG                       AfdFlags;
	ULONG                       TdiFlags;
} AFD_SEND_INFO , *PAFD_SEND_INFO ;
typedef struct _AFD_WSABUF {
	UINT  len;
	PCHAR buf;
} AFD_WSABUF, *PAFD_WSABUF;


typedef NTSTATUS (_stdcall* _NtDeviceIoControlFile)(
		IN       HANDLE           FileHandle,
		IN OPTIONAL   HANDLE           Event,
		IN OPTIONAL   PIO_APC_ROUTINE  ApcRoutine,
		IN OPTIONAL   PVOID            ApcContext,
		OUT      PIO_STATUS_BLOCK IoStatusBlock,
		IN       ULONG            IoControlCode,
		IN OPTIONAL   PVOID            InputBuffer,
		IN       ULONG            InputBufferLength,
		OUT OPTIONAL  PVOID            OutputBuffer,
		IN       ULONG            OutputBufferLength
		);




感谢layerfsd , 问题解决,直接IoIs32bitProcess(null), 即可

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
int *var;

sizeof(var);
2016-4-16 10:55
0
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
.....在编译时可以这样,我指在硬编码中....
比如,你勾DeviceIoControlFile, wow64当然以64位编译,
      DeviceIoControlFile的参数当然是64位,
但如果参数指向的位置包含指针,这个指针的长度,
     如果是32call它,那它长4, 64位call它长8
就是不知道如何确定的....
2016-4-16 11:22
0
雪    币: 8188
活跃值: (2842)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
IoIs32bitProcess,这个是文档化的,当然你自己要准备好两套相应的结构体了。
IopIsIosb32好像也可以,不记得了。
2016-4-16 12:35
0
雪    币: 8188
活跃值: (2842)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
refer:https://msdn.microsoft.com/en-us/library/ff545635
2016-4-16 12:36
0
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
在你说的这个AFD的32位的程序的地址也是64位的,只不过高32位都是0而已
2016-4-16 14:49
0
游客
登录 | 注册 方可回帖
返回
//