分区序列号修改工具.rar (643 K) 下载次数:0 uaCI2I QQ377718625
at2)%V) 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
_.EM])b 2 下面内容里面的有问题仅供参考。
04}c_XFFE 3 执行到下面标记位置程序就秒退了。
F<dhG>E9 #define _CRT_SECURE_NO_WARNINGS
}/IP\1bG #include <windows.h>
[[ Nn~7 #include <winternl.h>
CwyE8v #include <stdio.h>
[i>D|X rTJ;s //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass J @IKXhb7_ XB:E<I'q!3 typedef enum _FSINFOCLASS {
t~qAA\p}o FileFsVolumeInformation = 1,
q%)."10}] FileFsLabelInformation,
P86wRq
FileFsSizeInformation,
5a2
;@}%V FileFsDeviceInformation,
M~Er6Zg FileFsAttributeInformation,
=vDDfPR FileFsControlInformation,
c{x:'@%/s' FileFsFullSizeInformation,
=Pp-9<&S FileFsObjectIdInformation,
PfhKomt" FileFsDriverPathInformation,
T)eUo FileFsMaximumInformation
,Hp7`I>/ } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
tZ*>S]qD \`-xxhb?e typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
,XN4Iy#BZl Q#&6J =} typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
[g=4'4EZc )2u_[Jc= int main(int argc, char* argv[])
]{0OPU {
qK%#$JgqA const wchar_t* device = L"\\.\c:";
ldRq:M5z TIF =fQ HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
6
\
y?+H1 if (h == INVALID_HANDLE_VALUE) return 0;
bZj5qjl`x printf("handle is %d \n", h);
p`!<yq2_ DV*e.Y> HMODULE m = GetModuleHandleW(L"ntdll.dll");
%xp 69 if (!m) return 0;
6J cXhlB` printf("module is %p \n", m);
^
7)H;$ };gcM@]]E FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
_b *gg FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
'?3(& if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
bJeF1LjS printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
muhu`
k`C printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
S]4!uv^y |ss4pN0X NTSTATUS s;
Le,;)Nd const int size = 1024 * 10;
rV*Ri~Vx char* buf = new char[size];
9pk-#/ag memset(buf, 0, size);
@Q!Tvw/ IO_STATUS_BLOCK status{ 0 };
EQ"+G[j~x F
9r|EU#; typedef struct _FILE_FS_VOLUME_INFORMATION {
"od2i\ LARGE_INTEGER VolumeCreationTime;
5E}]U,$ ULONG VolumeSerialNumber;
/U6r
y' ULONG VolumeLabelLength;
Tv|iCYB? BOOLEAN SupportsObjects;
vJX0c\e WCHAR VolumeLabel[1];
~ET XXu${I } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
f%q ? s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
H#T&