首页
社区
课程
招聘
内核导出变量是地址还是变量
发表于: 2016-12-30 22:06 3721

内核导出变量是地址还是变量

2016-12-30 22:06
3721
比如 NtBuildNumber,对于xp sp3:

我看到很多人这么用的:
extern "C" __declspec(dllimport)  PSHORT NtBuildNumber;

这样应该:*NtBuildNumber=2600。

但是我实际调试发现导出的 NtBuildNumber不是一个指针,就是2600,就是说应该要这样:

extern "C" __declspec(dllimport)  SHORT NtBuildNumber;

NtBuildNumber=2600。

类似的还有:
extern "C" __declspec(dllimport) PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable;

这是怎么回事呢?我是vs2010编译的,有什么版本或者编译选项的不同吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 145
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
不用纠结这个,网上很多代码都很古老了,以自己实测为准.
2016-12-30 23:23
0
雪    币: 772
活跃值: (1002)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在编程中,变量是储存一个数据的坑,地址就是记录变量所在的内存首地址,

复制变量A到变量B的另类方法:

写内存(取变量地址(变量B),读内存(取变量数据地址(变量A),变量A长度),要写的长度)
2017-1-2 06:47
0
雪    币: 772
活跃值: (1002)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
此方法就是可强制转换变量类型。
但是也是存在bug的,因为整型4字节,双精单精什么的是8字,文本长度具实情了。
2017-1-2 06:50
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
直接用   也就是導入表裏有這個   的確是數值    應該是驅動加載時系統填充的吧      

但如果自己獲取    則是指針   需要加取值符*
2017-1-3 12:55
0
游客
登录 | 注册 方可回帖
返回