分区序列号修改工具.rar (643 K) 下载次数:0 (&\aA 0-}H QQ377718625
JqU ADm 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
=([av7 2 下面内容里面的有问题仅供参考。
f^Bc 3 执行到下面标记位置程序就秒退了。
X=X\F@V:u #define _CRT_SECURE_NO_WARNINGS
LJzH"K[Gg6 #include <windows.h>
irBDGT~ #include <winternl.h>
vP-M,4c #include <stdio.h>
hq>Csj=
=@ 6vzk\n //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass &~DTZgY B/uniR^x typedef enum _FSINFOCLASS {
-`c:}m FileFsVolumeInformation = 1,
]rBM5~ FileFsLabelInformation,
$6>?; FileFsSizeInformation,
Z+:D)L FileFsDeviceInformation,
y6HuN FileFsAttributeInformation,
tJI
,r_ FileFsControlInformation,
?:rx1}:F FileFsFullSizeInformation,
jdqj=Yc FileFsObjectIdInformation,
/'DwfX FileFsDriverPathInformation,
4jmK]. FileFsMaximumInformation
*<V^2z$y_ } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
Kf,-4)
p#d+>7 typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
bMoAD.} *gsAn<
typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
5ua?I9fY 5 MxL*DB=b int main(int argc, char* argv[])
'C+;r?1!h {
N]/!mo? const wchar_t* device = L"\\.\c:";
D vkxI<Xa ekSY~z=/u HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
"E!mva*NU if (h == INVALID_HANDLE_VALUE) return 0;
< a rZbM printf("handle is %d \n", h);
vFmJ;J "kW!{n HMODULE m = GetModuleHandleW(L"ntdll.dll");
j0-McLc if (!m) return 0;
MFit|C printf("module is %p \n", m);
g<*jlM1r ),^eA FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
m@
xi0t
FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
J QKdW if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
[pOg' printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
zzpZ19"`1 printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
n(Y%Vmy *=F(KZ NTSTATUS s;
|?m` xO const int size = 1024 * 10;
ak:v3cQR char* buf = new char[size];
<|6%9@ memset(buf, 0, size);
}E<^gAh} IO_STATUS_BLOCK status{ 0 };
YhKZ|@ 9|r* pK[ typedef struct _FILE_FS_VOLUME_INFORMATION {
7()?C}Ni- LARGE_INTEGER VolumeCreationTime;
Eh8Pwt7C@ ULONG VolumeSerialNumber;
tl8O6`<Z ULONG VolumeLabelLength;
m7]hJ,0 BOOLEAN SupportsObjects;
%uESrc-; WCHAR VolumeLabel[1];
JHV)ZOO } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
;1AG3P' s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
Sq]pQ8 PFILE_FS_VOLUME_INFORMATION p1 = (PFILE_FS_VOLUME_INFORMATION)buf;
Tt# bg1 p1->VolumeSerialNumber = 0;
DtCEm(b0 p1->VolumeLabel[0] = L'\0';
&wH:aD s = _ZwSetVolumeInformationFile(h, &status, p1, size, FileFsVolumeInformation);
MEZ{j%-a printf("%p \n", s);
IfdI|ya V
AQ)Hc] typedef struct _FILE_FS_OBJECTID_INFORMATION {
`d]Z)*9 UCHAR ObjectId[16];
PK6iY7Qp) UCHAR ExtendedInfo[48];
Jcf"#u-Q/ } FILE_FS_OBJECTID_INFORMATION, * PFILE_FS_OBJECTID_INFORMATION;
|!z2oO s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsObjectIdInformation);//秒退了。**************
nY-* i!H PFILE_FS_OBJECTID_INFORMATION p2 = (PFILE_FS_OBJECTID_INFORMATION)buf;
YZ}cB p2->ObjectId[0] = 55;
pJpNO$$w p2->ObjectId[1] = 55;
|(IO=V4P p2->ObjectId[2] = 55;
N0TeqOi4Y p2->ObjectId[3] = 55;
%FkLQ+v/< p2->ObjectId[4] = 55;
'JmBh@A p2->ObjectId[5] = 55;
,i}|5ozj4 p2->ObjectId[6] = 55;
"l~Ci7& !a p2->ObjectId[7] = 55;
[W,|kDK s = _ZwSetVolumeInformationFile(h, &status, p2, size, FileFsObjectIdInformation);//秒退了。**************
!AN^ ,v]D printf("%p \n", s);
jRZ%}KX )6oGF>o> //typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
{[G`Z9]z&- // BOOLEAN DriverInPath;
ks(SjEF // ULONG DriverNameLength;
&K%aw
// WCHAR DriverName[1];
g$37
;d3Tx //} FILE_FS_DRIVER_PATH_INFORMATION, * PFILE_FS_DRIVER_PATH_INFORMATION;
$Rtgr{ {;" //PFILE_FS_DRIVER_PATH_INFORMATION p3 = (PFILE_FS_DRIVER_PATH_INFORMATION)buf;
".2K9j7$ //p3->DriverInPath = TRUE;
$< %B#axL //p3->DriverNameLength = 0x200;
'A{h iY //wcscpy(p3->DriverName, L"\\\\?\\Volume{c6708e20-53cd-4265-a031-af74f04ca24b}");
*MM#Z?mP //s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsDriverPathInformation);
`$;+g ,
D>ef CloseHandle(h);
Se^^E.Z,W system("pause");
Nud,\mXrY[ return 0;
eb:A1f4L }