分区序列号修改工具.rar (643 K) 下载次数:0 H]TdW;
ZbZ QQ377718625
}nmlN 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
m</m9h8 2 下面内容里面的有问题仅供参考。
e`*}?N4d 3 执行到下面标记位置程序就秒退了。
j"W>fC/u #define _CRT_SECURE_NO_WARNINGS
b3(*/KgK #include <windows.h>
BN/4O?jD9 #include <winternl.h>
FD=%
4#| #include <stdio.h>
i'tMpS3 (?FH`< //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass $|4@Zx4vf $vn6%M[ typedef enum _FSINFOCLASS {
Q|y }mC/ FileFsVolumeInformation = 1,
!_I1=yi FileFsLabelInformation,
STKL FileFsSizeInformation,
QcegT/vO FileFsDeviceInformation,
Sp`l>BL FileFsAttributeInformation,
ts]e M1; FileFsControlInformation,
UG| /Px ] FileFsFullSizeInformation,
}=R]<`Sj.j FileFsObjectIdInformation,
KE?t?p FileFsDriverPathInformation,
J^!;$Hkd FileFsMaximumInformation
qwTz7r } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
l#)X/(?; dFg>uo typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
D9rQ%|}S Vk5Z[w a typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
W4$o\yA] 5Xy(za int main(int argc, char* argv[])
^FCXcn9 {
`Rq=:6U;3 const wchar_t* device = L"\\.\c:";
*k?:k78L ('J/Ww< HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
lu utyK! if (h == INVALID_HANDLE_VALUE) return 0;
d^=BXCoC printf("handle is %d \n", h);
jNZ.Fb F.s$Y+c!6 HMODULE m = GetModuleHandleW(L"ntdll.dll");
=H95?\}T[ if (!m) return 0;
"N4^ ^~s printf("module is %p \n", m);
I&PJ[U#~a ?%kgfw@) FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
zzmC[,u} FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
Q*M# e if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
Dy08.Sss printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
h>Kx printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
@T1G#[C~t g[xoS\d NTSTATUS s;
DE13x*2 const int size = 1024 * 10;
!2!~_*sGe char* buf = new char[size];
?Y=aO(}=h memset(buf, 0, size);
5epI'D IO_STATUS_BLOCK status{ 0 };
CEfqFn3^ 8$FH;= typedef struct _FILE_FS_VOLUME_INFORMATION {
(leX` SN0u LARGE_INTEGER VolumeCreationTime;
L!f~Am:# ULONG VolumeSerialNumber;
'|yx B') ULONG VolumeLabelLength;
Bk8}K=%w BOOLEAN SupportsObjects;
g)Z8WH$;H3 WCHAR VolumeLabel[1];
}D1x%L } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
G?Et$r7:R s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
iFIGJS PFILE_FS_VOLUME_INFORMATION p1 = (PFILE_FS_VOLUME_INFORMATION)buf;
d_[H|H9i6 p1->VolumeSerialNumber = 0;
d3%qYL_+a p1->VolumeLabel[0] = L'\0';
@2(u=E: ^ s = _ZwSetVolumeInformationFile(h, &status, p1, size, FileFsVolumeInformation);
f-U zFlU printf("%p \n", s);
D?Oe";"/ Bwg(f_[1 typedef struct _FILE_FS_OBJECTID_INFORMATION {
$<*) 5|6 UCHAR ObjectId[16];
ixTjXl2g UCHAR ExtendedInfo[48];
2- iY:r } FILE_FS_OBJECTID_INFORMATION, * PFILE_FS_OBJECTID_INFORMATION;
2mY!gVi s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsObjectIdInformation);//秒退了。**************
zCs34=3D[ PFILE_FS_OBJECTID_INFORMATION p2 = (PFILE_FS_OBJECTID_INFORMATION)buf;
V 6}5^W p2->ObjectId[0] = 55;
F`=p/IAJK p2->ObjectId[1] = 55;
Y;w|Fvjj+ p2->ObjectId[2] = 55;
d<c 29Y p2->ObjectId[3] = 55;
oZ{,IZ45 p2->ObjectId[4] = 55;
O]: 9va p2->ObjectId[5] = 55;
_{|a<Keq| p2->ObjectId[6] = 55;
W]4Z4&