我还是直接上代码吧
HANDLE OpenDisk(CHAR lpszDiskName)
{
NTSTATUS ntStatus;
IO_STATUS_BLOCK iostatus;
OBJECT_ATTRIBUTES objectAttributes;
UNICODE_STRING DiskUnicodeString;
HANDLE hfile;
ANSI_STRING DiskNameString;
_asm int 3
switch(lpszDiskName)
{
case 'C':
// RtlInitUnicodeString(&DiskUnicodeString, L"\\??\\PHYSICALDRIVE0"); 此处打开成功,可惜是个物理磁盘
// RtlInitUnicodeString(&DiskUnicodeString, L"\\??\\C:\\");打开成功,可惜好像是个目录
RtlInitUnicodeString(&DiskUnicodeString, L"\\??\\C:"); 打开失败
// RtlInitUnicodeString(&DiskUnicodeString, L"\\Device\\HarddiskVolume1"); 打开失败
break;
}
//初始化objectAttributes
InitializeObjectAttributes(&objectAttributes,
&DiskUnicodeString,
OBJ_CASE_INSENSITIVE,//对大小写敏感
NULL,
NULL);
//打开文件
_asm int 3
ntStatus = ZwCreateFile(&hfile,
GENERIC_READ|GENERIC_WRITE,
&objectAttributes,
&iostatus,
NULL,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ,
FILE_OPEN, //打开文件,如果不存在,则返回错误
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0);
if (NT_SUCCESS(ntStatus))
{
KdPrint(("Open file successfully.\n"));
// ZwClose(hfile);
return hfile;
}
else
{
KdPrint(("Open failed.\n"));
return NULL;
}
return NULL;
}
有哪位大侠知道的请指教下
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)