分区序列号修改工具.rar (643 K) 下载次数:0 x)( |[ QQ377718625
BD(Z5+EU1 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
L4!{h| 2 下面内容里面的有问题仅供参考。
E?_Z`*h 3 执行到下面标记位置程序就秒退了。
'7XIhN9 #define _CRT_SECURE_NO_WARNINGS
H$y-8-&) #include <windows.h>
|yx6X{$k #include <winternl.h>
w.[ "p9tc #include <stdio.h>
Ii G6<|d8H }GeSu|m( //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass On?p 9^9 Q%xC}||1s" typedef enum _FSINFOCLASS {
8F'x=lIO FileFsVolumeInformation = 1,
sBcPq SMby FileFsLabelInformation,
%i5M77#Z FileFsSizeInformation,
iof-7{+3_ FileFsDeviceInformation,
."9];)2rx FileFsAttributeInformation,
r zt Ru FileFsControlInformation,
)
jt #=9ZQ FileFsFullSizeInformation,
nDHTV!]< FileFsObjectIdInformation,
Ytl4kaYS FileFsDriverPathInformation,
EOCN&_Z; FileFsMaximumInformation
v%q0OX>9X" } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
V#iPj'*
HSc~*Q typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
K*~0"F>"0 H '
typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
DAXX;4 8uWa=C) int main(int argc, char* argv[])
97
}OL`y {
3.*8)NW const wchar_t* device = L"\\.\c:";
*{L)dW+: p>4-s, W HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
RS8Hf~0G if (h == INVALID_HANDLE_VALUE) return 0;
NuQdSj_> printf("handle is %d \n", h);
+mn,F}; "g1)f"pL HMODULE m = GetModuleHandleW(L"ntdll.dll");
cLLbZ=` if (!m) return 0;
~^1 {B\I printf("module is %p \n", m);
MRdduPrM%$ <i&_ooX FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
-4
SY=NC_ FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
JU)dr4S? if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
]@phF _ printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
R^Y
<RI printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
(jAg_$6 ee^{hQi NTSTATUS s;
i%0ur
}p const int size = 1024 * 10;
oC0qG[yp9S char* buf = new char[size];
Sy0$z39 memset(buf, 0, size);
[D\k^h IO_STATUS_BLOCK status{ 0 };
fTK3,s1= $w`=z<2yo1 typedef struct _FILE_FS_VOLUME_INFORMATION {
Y2~nBb LARGE_INTEGER VolumeCreationTime;
x8V('` }j ULONG VolumeSerialNumber;
$xPaYf ULONG VolumeLabelLength;
QC}CRk
p BOOLEAN SupportsObjects;
~kEI4}O WCHAR VolumeLabel[1];
cWe"%I } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
z?R|Ok s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
?gt l )q PFILE_FS_VOLUME_INFORMATION p1 = (PFILE_FS_VOLUME_INFORMATION)buf;
"i[@P) p1->VolumeSerialNumber = 0;
ZzJ?L4J5v p1->VolumeLabel[0] = L'\0';
}E50>g s = _ZwSetVolumeInformationFile(h, &status, p1, size, FileFsVolumeInformation);
62ws/8d6f printf("%p \n", s);
9,:l8 hYG6 pTCb typedef struct _FILE_FS_OBJECTID_INFORMATION {
/7Cc
#P6 UCHAR ObjectId[16];
@emK1iwm UCHAR ExtendedInfo[48];
]QlwR'&j/n } FILE_FS_OBJECTID_INFORMATION, * PFILE_FS_OBJECTID_INFORMATION;
Yfzl%wc s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsObjectIdInformation);//秒退了。**************
Ju1D
=b PFILE_FS_OBJECTID_INFORMATION p2 = (PFILE_FS_OBJECTID_INFORMATION)buf;
lww!-(<ww p2->ObjectId[0] = 55;
9
a!$z!. p2->ObjectId[1] = 55;
HMh"}I2n p2->ObjectId[2] = 55;
T?ZRiR)@ p2->ObjectId[3] = 55;
Q7jb'y$ozO p2->ObjectId[4] = 55;
] Zy5%gI p2->ObjectId[5] = 55;
?kbiMs1;u p2->ObjectId[6] = 55;
KUlp"{a`,K p2->ObjectId[7] = 55;
>I-RGW'A s = _ZwSetVolumeInformationFile(h, &status, p2, size, FileFsObjectIdInformation);//秒退了。**************
j i7[nY printf("%p \n", s);
Lh!J > -z)n?(pftm //typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
@1o/0y" // BOOLEAN DriverInPath;
s@K4u^$A // ULONG DriverNameLength;
!
|<Fo'U // WCHAR DriverName[1];
2fnkw/ //} FILE_FS_DRIVER_PATH_INFORMATION, * PFILE_FS_DRIVER_PATH_INFORMATION;
L.*M&Ry //PFILE_FS_DRIVER_PATH_INFORMATION p3 = (PFILE_FS_DRIVER_PATH_INFORMATION)buf;
Bg x'9p/ //p3->DriverInPath = TRUE;
3KlbP //p3->DriverNameLength = 0x200;
>4TaP*_ //wcscpy(p3->DriverName, L"\\\\?\\Volume{c6708e20-53cd-4265-a031-af74f04ca24b}");
|B.Y6L6l //s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsDriverPathInformation);
uxvqMgR ^:^9l1] CloseHandle(h);
Y)
* #)f system("pause");
FQ<Ju. return 0;
:VRNs }