今天在尝试做一个U盘白名单的小功能,发现无论是驱动层还是应用层,xp下都获取不到U盘的序列号。
使用IoBuildDeviceIoControlRequest构建IRP,将PropQuery.PropertyId 与 PropQuery.QueryType 分别设为 StorageDeviceProperty与
PropertyStandardQuery,得到返回的outputbuffer就是U盘各种信息的结构体,但结构体中存储的都是一个偏移量。我通过地址与偏移截取出每一段的数据,但我发现在XP下调试时SerialNumberOffset为0,也就是没有这个序列号,通过查看内存上的内容也发现与win7 64位相比,内存上的确缺少了这个序列号的值。接着我以为是驱动层的原因,我又尝试了相同的方式在应用层使用DeviceIoControl获得U盘信息,发现结果与驱动层一样。
同样的获取方式,为什么在win7下正常,但在XP下反而少了这个数据?那XP下获取U盘序列号应该用什么方法呢?xp下:其他系统:
同样的获取方式,为什么在win7下正常,但在XP下反而少了这个数据?那XP下获取U盘序列号应该用什么方法呢?xp下:
其他系统:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
黑洛 cmd 命令测试
只想睡个好觉 我需要的是U盘出厂时所带的序列号,不是卷序列号
大头NumOne 这个问题解决了吗?server 2003 和XP都获得不到U盘的物理序列号
shuyangzjg 设备管理器属性里 也看不到信息吗
先试试命令行敲一下:
wmic DiskDrive get Caption, SerialNumber, Size