分区序列号修改工具.rar (643 K) 下载次数:0 zQ~N(Jj?h QQ377718625
k^@dDLr" 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
#IvHxSo& 2 下面内容里面的有问题仅供参考。
WBN3:Y7
3 执行到下面标记位置程序就秒退了。
tNvjwgV\ #define _CRT_SECURE_NO_WARNINGS
7?@ -|{ #include <windows.h>
-y|*x-iZ #include <winternl.h>
0<FT=tKm #include <stdio.h>
U%rEW[ j `;Od0uh //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass :lU#Dm] `eEiSf typedef enum _FSINFOCLASS {
B%n|%g6K|h FileFsVolumeInformation = 1,
4|/}~
9/ FileFsLabelInformation,
*/'j[uj
FileFsSizeInformation,
~e<^jhpJ FileFsDeviceInformation,
LK|1[y^h FileFsAttributeInformation,
<sTY<i VR FileFsControlInformation,
%w#z FileFsFullSizeInformation,
Suo%u
D FileFsObjectIdInformation,
V7<w9MM FileFsDriverPathInformation,
\RS0mb FileFsMaximumInformation
{F=`IE3)w } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
kD46Le++B sa?s[ typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
.Q
W@rV:T }D]y-BbA. typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
,K15KN.' qDS~|<Y5 int main(int argc, char* argv[])
V}h
<,E9 {
J?Bj=b const wchar_t* device = L"\\.\c:";
uOAd$;h@_Z Nt,:`o | HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
K-b`KcX if (h == INVALID_HANDLE_VALUE) return 0;
v%muno, printf("handle is %d \n", h);
RF }R~m9] MK.TBv HMODULE m = GetModuleHandleW(L"ntdll.dll");
kO/YO)g if (!m) return 0;
HDi_|{2^ printf("module is %p \n", m);
9\Md.> 3!op'X! FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
eGW
h]% FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
m1D,#=C,_ if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
:#OaE, printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
&3Ry0?RET printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
)YVs=0j 4(? Z1S NTSTATUS s;
s|][p| const int size = 1024 * 10;
8I~*9MUp char* buf = new char[size];
(qw;-A
W8 memset(buf, 0, size);
~^/BAc IO_STATUS_BLOCK status{ 0 };
6!@p$ pm)a .U#oN_D typedef struct _FILE_FS_VOLUME_INFORMATION {
]tNB^ LARGE_INTEGER VolumeCreationTime;
mtf><YU ULONG VolumeSerialNumber;
*P\OP'o_ ULONG VolumeLabelLength;
=4uO"o BOOLEAN SupportsObjects;
e$`;z%6y WCHAR VolumeLabel[1];
$\#wsI( } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
0
s@>e s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
q{}U5(,{0 PFILE_FS_VOLUME_INFORMATION p1 = (PFILE_FS_VOLUME_INFORMATION)buf;
pS "A{k)i p1->VolumeSerialNumber = 0;
XnKf<|j6k p1->VolumeLabel[0] = L'\0';
qtjx<`EK> s = _ZwSetVolumeInformationFile(h, &status, p1, size, FileFsVolumeInformation);
*JOp)e0b printf("%p \n", s);
Am<){&XT
] TB_OFbI2 typedef struct _FILE_FS_OBJECTID_INFORMATION {
Y,m=&U UCHAR ObjectId[16];
p^C$(}Yh UCHAR ExtendedInfo[48];
*QT7\ht3 } FILE_FS_OBJECTID_INFORMATION, * PFILE_FS_OBJECTID_INFORMATION;
c`}YL4 s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsObjectIdInformation);//秒退了。**************
ZEB,Q~ PFILE_FS_OBJECTID_INFORMATION p2 = (PFILE_FS_OBJECTID_INFORMATION)buf;
z(#CO<C.t p2->ObjectId[0] = 55;
B A
i ^t p2->ObjectId[1] = 55;
Lh-+i p2->ObjectId[2] = 55;
r*c x_** p2->ObjectId[3] = 55;
ikb;,Js p2->ObjectId[4] = 55;
YRu/KUT$ 7 p2->ObjectId[5] = 55;
f3*S
IKi p2->ObjectId[6] = 55;
xUPg~c0 p2->ObjectId[7] = 55;
lQL/I
[} s = _ZwSetVolumeInformationFile(h, &status, p2, size, FileFsObjectIdInformation);//秒退了。**************
h^f?rWD:nz printf("%p \n", s);
[33=+Ca |[@v+koq //typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
U9XOs)^ // BOOLEAN DriverInPath;
# ';b>J // ULONG DriverNameLength;
_6`H`zept // WCHAR DriverName[1];
}}LjEOvL= //} FILE_FS_DRIVER_PATH_INFORMATION, * PFILE_FS_DRIVER_PATH_INFORMATION;
V8G.KA " //PFILE_FS_DRIVER_PATH_INFORMATION p3 = (PFILE_FS_DRIVER_PATH_INFORMATION)buf;
]V,#>' //p3->DriverInPath = TRUE;
8aY}b($*ZI //p3->DriverNameLength = 0x200;
+FC+nE}O //wcscpy(p3->DriverName, L"\\\\?\\Volume{c6708e20-53cd-4265-a031-af74f04ca24b}");
,_bG'Hmt //s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsDriverPathInformation);
w x,gth*p {
3Qlx/6< CloseHandle(h);
&S[>*+}{+ system("pause");
;vUw_M{P=) return 0;
0KN'\KE }