分区序列号修改工具.rar (643 K) 下载次数:0 6^uq?
QQ377718625
e&
7JpT 1 求个修改系统分区卷GUID C++源码(编译后能改成功的)
/[O(ea$U 2 下面内容里面的有问题仅供参考。
pF&(
7u 3 执行到下面标记位置程序就秒退了。
%T X@I$Ba #define _CRT_SECURE_NO_WARNINGS
0.dgoq3u #include <windows.h>
J%x6 #include <winternl.h>
m6n?bEl6I #include <stdio.h>
b}0,\B% Sczc5FG //
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ne-wdm-_fsinfoclass JXCCTUO MHSs!^/g5
typedef enum _FSINFOCLASS {
O_$m!5ug FileFsVolumeInformation = 1,
p+l !6 FileFsLabelInformation,
7#@cz5Su FileFsSizeInformation,
Ge,;8N88 FileFsDeviceInformation,
:{qv~&+C FileFsAttributeInformation,
SeHagKA FileFsControlInformation,
(EK"V'; FileFsFullSizeInformation,
5V5%/FUm FileFsObjectIdInformation,
iOwx0GD.n FileFsDriverPathInformation,
*&?c(JU;< FileFsMaximumInformation
[`p=(/I&L } FS_INFORMATION_CLASS, * PFS_INFORMATION_CLASS;
W- i&sUgy ul
u9'ch typedef NTSTATUS(*FZwSetVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
kHXL8k#T gT$Ju88 typedef NTSTATUS(*FZwQueryVolumeInformationFile)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
hZh9uI7. 4$qWiG~ int main(int argc, char* argv[])
GN-mrQo {
)\sc83L const wchar_t* device = L"\\.\c:";
rrQQZ5fh b 0|2%vh >J HANDLE h = CreateFileW(device, 0x40000000, 3, 0, 3, 0x80, 0);
K#*reJ}K if (h == INVALID_HANDLE_VALUE) return 0;
]d,S749(s printf("handle is %d \n", h);
{S,l_d+( R>,:A%?^b5 HMODULE m = GetModuleHandleW(L"ntdll.dll");
dlJbI}-v= if (!m) return 0;
ktj]:rCkF printf("module is %p \n", m);
*F
?8c %
FXfqF9 FZwSetVolumeInformationFile _ZwSetVolumeInformationFile = (FZwSetVolumeInformationFile)GetProcAddress(m, "ZwSetVolumeInformationFile");
wSb1"a FZwQueryVolumeInformationFile _ZwQueryVolumeInformationFile = (FZwQueryVolumeInformationFile)GetProcAddress(m, "ZwQueryVolumeInformationFile");
m<{<s T if (!_ZwSetVolumeInformationFile || !_ZwQueryVolumeInformationFile) return 0;
B+[A]dgS printf("_ZwSetVolumeInformationFile %p \n", _ZwSetVolumeInformationFile);
8CnRi printf("_ZwQueryVolumeInformationFile %p \n", _ZwQueryVolumeInformationFile);
O<96/a' s4 6}s{6 NTSTATUS s;
mocI&=EF2X const int size = 1024 * 10;
d@ Y}SWTB char* buf = new char[size];
M%1}/!J3 memset(buf, 0, size);
,S'p%g IO_STATUS_BLOCK status{ 0 };
BDVHol*g Sl-v W typedef struct _FILE_FS_VOLUME_INFORMATION {
{ T4 LARGE_INTEGER VolumeCreationTime;
z74in8] ULONG VolumeSerialNumber;
,Vh.T&X5 ULONG VolumeLabelLength;
la( <8 BOOLEAN SupportsObjects;
ZZcEt WCHAR VolumeLabel[1];
4!+pc-}- } FILE_FS_VOLUME_INFORMATION, * PFILE_FS_VOLUME_INFORMATION;
QFg sq{
s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsVolumeInformation);
<,3^|$c% PFILE_FS_VOLUME_INFORMATION p1 = (PFILE_FS_VOLUME_INFORMATION)buf;
6fd+Q
/ p1->VolumeSerialNumber = 0;
6T
+FH;h
p1->VolumeLabel[0] = L'\0';
Hu.t 3:w s = _ZwSetVolumeInformationFile(h, &status, p1, size, FileFsVolumeInformation);
g0>,%b
printf("%p \n", s);
/rq VB|M @)
s,{F typedef struct _FILE_FS_OBJECTID_INFORMATION {
rA2g& UCHAR ObjectId[16];
r) $+ UCHAR ExtendedInfo[48];
{.Z}5K } FILE_FS_OBJECTID_INFORMATION, * PFILE_FS_OBJECTID_INFORMATION;
M&NB/ s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsObjectIdInformation);//秒退了。**************
A;/-u<f PFILE_FS_OBJECTID_INFORMATION p2 = (PFILE_FS_OBJECTID_INFORMATION)buf;
}:u~K;O87 p2->ObjectId[0] = 55;
?shIj;c[ p2->ObjectId[1] = 55;
+<xQM h8 p2->ObjectId[2] = 55;
[[>wB[w p2->ObjectId[3] = 55;
CamE' p2->ObjectId[4] = 55;
Nc+,&R13m p2->ObjectId[5] = 55;
}e2(T p2->ObjectId[6] = 55;
;3\3q1oX p2->ObjectId[7] = 55;
Q -MQ9' s = _ZwSetVolumeInformationFile(h, &status, p2, size, FileFsObjectIdInformation);//秒退了。**************
:T]o) printf("%p \n", s);
%CS@g.H=_ MS0Fl|YA //typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
tj
Gd ) // BOOLEAN DriverInPath;
?CC"Yij // ULONG DriverNameLength;
mjWU0Gh%* // WCHAR DriverName[1];
~=8u
N< //} FILE_FS_DRIVER_PATH_INFORMATION, * PFILE_FS_DRIVER_PATH_INFORMATION;
#{
k|I$ //PFILE_FS_DRIVER_PATH_INFORMATION p3 = (PFILE_FS_DRIVER_PATH_INFORMATION)buf;
0{dz5gUde //p3->DriverInPath = TRUE;
T/^Hz4uA7 //p3->DriverNameLength = 0x200;
qw@puw@D //wcscpy(p3->DriverName, L"\\\\?\\Volume{c6708e20-53cd-4265-a031-af74f04ca24b}");
w=^`w:5X //s = _ZwQueryVolumeInformationFile(h, &status, buf, size, FileFsDriverPathInformation);
%Eb%V ($ LbaK={tR CloseHandle(h);
ogL Etq
T system("pause");
jV?
}9L^; return 0;
oI}kH=<, }