分区序列号修改工具.rar (643 K) 下载次数:0 R_N<j QQ377718625
qA~D*= 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
1tr>D:c\ 2 下面内容里面的有问题仅供参考。
xBZ9|2Y s 3 执行到下面标记位置程序就秒退了。
apMYBbC #define _CRT_SECURE_NO_WARNINGS
2s4=
%l #include <windows.h>
=3zn
Ta } #include <winternl.h>
GVfu_z? #include <stdio.h>
jo |q,t jo(Q`oxm!> //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass !}PFi T^ 6m.Ku13; typedef enum _FSINFOCLASS {
__V]HcP; FileFsVolumeInformation = 1,
w7Pe<vT FileFsLabelInformation,
QhG-1P3# FileFsSizeInformation,
V%0.%/<#5 FileFsDeviceInformation,
hZ'oCRM FileFsAttributeInformation,
)>Q 2G/@ FileFsControlInformation,
~c="<xBE FileFsFullSizeInformation,
2 Lamvf FileFsObjectIdInformation,
R`**!ku FileFsDriverPathInformation,
~r!5d@f.6 FileFsMaximumInformation
*M|\B|A. } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
y[zA[H: xk*3,J6BK typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
R|CY4G
j wqwJpWIe typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
_$'Mx'IC= mWusRgj+8 int main(int argc, char* argv[])
kdUGmR0d {
{''|iwLr const wchar_t* device = L"\\.\c:";
{.lF~cOu R_qo]WvR; HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
avpw+
M6+ if (h == INVALID_HANDLE_VALUE) return 0;
AslH
V@K printf("handle is %d \n", h);
>#:/
GN? 5i/E=D HMODULE m = GetModuleHandleW(L"ntdll.dll");
}]~}DHYr if (!m) return 0;
&CL|q+- printf("module is %p \n", m);
Ky yG8;G%
Ij#a FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
jccW8g~
~ FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
VBX#
!K1Q if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
uTU4Fn\$L printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
6oP{P_Pxi printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
lz)"zV
[;=WnG NTSTATUS s;
Z8&C-yCC const int size = 1024 * 10;
4v|/+J6G char* buf = new char[size];
2&Byq memset(buf, 0, size);
+r0eTP=zf IO_STATUS_BLOCK status{ 0 };
~^^ey17 `oMeR]~ typedef struct _FILE_FS_VOLUME_INFORMATION {
jOb[h=B" LARGE_INTEGER VolumeCreationTime;
&
.?HuK ULONG VolumeSerialNumber;
;ULC|7rL ULONG VolumeLabelLength;
~t:b<'/ BOOLEAN SupportsObjects;
j>o +}p?3I WCHAR VolumeLabel[1];
+^J-'7Vt } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
$CmX
&%L= s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
aVP|:OAj PFILE_FS_VOLUME_INFORMATION p1 = (PFILE_FS_VOLUME_INFORMATION)buf;
|\a:]SlH p1->VolumeSerialNumber = 0;
Ib2 @Wi p1->VolumeLabel[0] = L'\0';
fl"y@;;#h s = _ZwSetVolumeInformationFile(h, &status, p1, size, FileFsVolumeInformation);
Q@2tT&eL printf("%p \n", s);
(J*w./ 8`G{1lr4o typedef struct _FILE_FS_OBJECTID_INFORMATION {
30
_un UCHAR ObjectId[16];
A&P1M6Of UCHAR ExtendedInfo[48];
A(n=kx } FILE_FS_OBJECTID_INFORMATION, * PFILE_FS_OBJECTID_INFORMATION;
5ZA%,pH>Jq s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsObjectIdInformation);//秒退了。**************
\ZFQ?e,d PFILE_FS_OBJECTID_INFORMATION p2 = (PFILE_FS_OBJECTID_INFORMATION)buf;
cY2-T#rL p2->ObjectId[0] = 55;
mbBRuPEa=u p2->ObjectId[1] = 55;
~+#--BhV p2->ObjectId[2] = 55;
LO]6Xd
" p2->ObjectId[3] = 55;
%;Z bQ9 p2->ObjectId[4] = 55;
aE BP9RX}z p2->ObjectId[5] = 55;
B"PHJj p2->ObjectId[6] = 55;
KupMndK p2->ObjectId[7] = 55;
-L9R&r#_e s = _ZwSetVolumeInformationFile(h, &status, p2, size, FileFsObjectIdInformation);//秒退了。**************
M_1Tx printf("%p \n", s);
p??/r gOyY#]g //typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
grQnV' q // BOOLEAN DriverInPath;
QWHy=(! // ULONG DriverNameLength;
_g 4/% // WCHAR DriverName[1];
#Q3PzDfj //} FILE_FS_DRIVER_PATH_INFORMATION, * PFILE_FS_DRIVER_PATH_INFORMATION;
q.MVF] //PFILE_FS_DRIVER_PATH_INFORMATION p3 = (PFILE_FS_DRIVER_PATH_INFORMATION)buf;
`XxG"k\/S //p3->DriverInPath = TRUE;
B~>cNj< //p3->DriverNameLength = 0x200;
O4/n!H
Ob //wcscpy(p3->DriverName, L"\\\\?\\Volume{c6708e20-53cd-4265-a031-af74f04ca24b}");
Tj=
dL //s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsDriverPathInformation);
mY`]33??v {TncqA CloseHandle(h);
-(w~LT$ " system("pause");
&^IcL!t[ return 0;
tin|,jA = }