0x1:
网上有个磁盘分区修改器小工具
逆向一波学习看下这个软件的修改原理.
0x2:
祭出最新的pediy ida7.2
直接拖进去,定位到mfc的窗口初始化枚举磁盘的地方
先枚举所有本地的分区,然后获取信息。
先看获取系统分区序列号的代码
先直接CreateFile打开对应的盘符.然后使用ZwQueryVolumeInformationFile的FileFsVolumeInformation(0x1)查询卷的信息。
如果失败了,就用GetVolumeInformationW来获取卷的序列号,实际上GetVolumeInformationW内部也是用 ZwQueryVolumeInformationFile来获取的....
win2k代码:
接着看程序获取磁盘分区序列号:
这部分就比较简单了,也是先打开对应的分区,然后直接读取前面一个扇区大小的数据,然后返回buffer+0x48的一个DWORD就是了
0x3 修改序列号的实现:
找到点击确定按钮的地方
看下这个CALL内部代码:
还是先打开对应的分区,然后读取第一个扇区,把+0x48写入新的序列号,然后再写回去。
返回结果
程序分析完了,那么来仿写一个吧。
0x4:
编译完运行一下,可以看到已经生效了
重启一下, ZwQueryVolumeInformationFile查询的也会生效啦。
ps:
那如何不重启就生效呢:
过滤FileFsVolumeInformation即可。
win10下面会触发pg..ntfs的driver_object有保护~
[公告]LV6级以上的看雪会员可以免费获得《2019安全开发者峰会》门票一张!!
最后于 15小时前 被xiaofu编辑 ,原因: