首页
社区
课程
招聘
[求助]32位程序与64位驱动通信
发表于: 2017-6-30 14:22 6061

[求助]32位程序与64位驱动通信

2017-6-30 14:22
6061

最近在搞一些小玩意,目标进程是32位

之后我想先获取一些关于目标进程的数据(ULONG)

之后传递到驱动进行处理,然而驱动接受到的缓冲区数据(ULONG)打印出来是错误的 

请问各位大佬怎么把32位的ULONG数据传递到驱动中


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
统一用ULONG32和ULONG64,不要用void  *  HANDLE等大小会变化的类型
2017-6-30 15:11
0
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
64位ULONG是ULONG64,32位编译是ULONG32,肯定会出问题啊
2017-6-30 19:20
0
雪    币: 347
活跃值: (991)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这种情况下是驱动去兼容应用程序。内核根据当前进程的不同分别采用不同的结构体即可。可以参考PEB32/PEB64的定义:在内核中定义32位指针时,全部使用ULONG即可。
2017-6-30 21:48
0
雪    币: 347
活跃值: (991)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
typedef  struct  LIST_ENTRY32  {
        ULONG  Flink;
        ULONG  Blink;
}  LIST_ENTRY32;
typedef  LIST_ENTRY32  *PLIST_ENTRY32;

typedef  struct  LIST_ENTRY64  {
        ULONGLONG  Flink;
        ULONGLONG  Blink;
}  LIST_ENTRY64;
typedef  LIST_ENTRY64  *PLIST_ENTRY64;

typedef  struct  _LIST_ENTRY  {
      struct  _LIST_ENTRY  *Flink;
      struct  _LIST_ENTRY  *Blink;
}  LIST_ENTRY,  *PLIST_ENTRY,  *RESTRICTED_POINTER  PRLIST_ENTRY;

  PLIST_ENTRY32    list32;
list32  =  (PLIST_ENTRY32)(ULONG_PTR)list32->Blink;

体会体会
总得来说,所有交互的结构体都要定义出32位的。内核使用时将其转换一下即可
2017-6-30 21:54
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
iceway 64位ULONG是ULONG64,32位编译是ULONG32,肯定会出问题啊
ULONG不会,  ULONG_PTR才是
2017-6-30 22:26
0
雪    币: 7570
活跃值: (5407)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
你32位传入给64位驱动的数据类型也是64位的就行了.
比如  将32位的DWORD  LONG  ULONG    PVOID  这些类型都改成后面加一个64就可以了
2017-7-1 03:55
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
rrrfff ULONG不会, ULONG_PTR才是
请问,CSDN的列宁的现况?好多年没见过了,连续私信了几年都不见回复
2017-7-1 08:52
0
雪    币: 208
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
hzqst 统一用ULONG32和ULONG64,不要用void * HANDLE等大小会变化的类型
那是否需要指定ULONG是32还是64
2017-7-1 17:43
0
雪    币: 208
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
rrrfff ULONG不会, ULONG_PTR才是
嗯嗯,谢谢dalao
2017-7-1 17:44
0
雪    币: 208
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
lononan 你32位传入给64位驱动的数据类型也是64位的就行了. 比如 将32位的DWORD LONG ULONG PVOID 这些类型都改成后面加一个64就可以了
嗯嗯,统一指定就ok了吧~
2017-7-1 17:44
0
雪    币: 208
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
rrrfff ULONG不会, ULONG_PTR才是
嗯嗯,谢谢
2017-7-1 17:45
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13




哇咔咔zs

请问,CSDN的列宁的现况?好多年没见过了,连续私信了几年都不见回复

可惜,  他的Q名改了,  当时没备注现在我也找不到他了...
最后一次见他Q名是北京邮电大学,  问他为啥,  说伪装...现在要没离校的话估计读博期间...

另外他很喜欢生物, 也可能出国搞研究去了...

2017-7-30 19:53
0
雪    币: 130
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
rrrfff 哇咔咔zs 请问,CSDN的列宁的现况?好多年没见过了,连续私信了几年都不见回复 可惜,  他的Q名改了,&nb ...
好吧,当时认识他是19岁,  21,22,23,24每年都私信,应该不上CSDN了
天才一个啊,所问的每一个问题他无所不知的感觉
2017-7-31 18:56
0
游客
登录 | 注册 方可回帖
返回
//