NtOpenFile returns STATUS_OBJECT_NAME_INVALID
NtOpenFile returns STATUS_OBJECT_NAME_INVALID
以下代码尝试使用NtOpenFile:生成文件句柄
HANDLE spawnFileHandle(){
HANDLE ret;
IO_STATUS_BLOCK IoStatusBlock;
OBJECT_ATTRIBUTES ObjectAttributes;
ObjectAttributes.SecurityDescriptor=0;
ObjectAttributes.SecurityQualityOfService=0;
ObjectAttributes.RootDirectory=0;
ObjectAttributes.Attributes=0;
ObjectAttributes.Length=sizeof(OBJECT_ATTRIBUTES);
WCHAR stringBuffer[5048];
UNICODE_STRING string;
string.Buffer = stringBuffer;
lstrcpyW(stringBuffer, L"\??\");
lstrcatW(stringBuffer, EXEPath);
string.Length = lstrlenW(stringBuffer)*2; // Edit after comment.
string.MaximumLength = 5048;
ObjectAttributes.ObjectName=&string;
NTSTATUS error=origZwOpenFile(&ret, FILE_READ_DATA, &ObjectAttributes, &IoStatusBlock, FILE_SHARE_READ, 0);
printf("huh %ls %x", stringBuffer, error);
return ret;
}
但它始终返回STATUS_OBJECT_NAME_INVALID,例如:
编辑:[HBIP]-隐藏因为我偏执。-
EXE path : C:Usersn00bDesktop[HBIP]Debug[HBIP].exe
huh ??C:Usersn00bDesktop[HBIP]Debug[HBIP].exe c0000033
Spawned Handle : cccccccc
原因可能是什么?
UNICODE_STRING
结构要求Length
和MaximumLength
都以字节为单位。请注意,这些值将始终是偶数。
您得到STATUS_OBJECT_NAME_INVALID
是因为您的Length
是奇数,因此无效。
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- C++ "error: invalid use of void expression"
- C++中"dependent name"的定义是什么?
- 收到错误"invalid use of non-static data member 'stu::n' "
- 将系数存储在头文件的数组中("does not name a type"错误)
- Poloniex API "Invalid command" c++ libcurl
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- C++初学者:为什么我的编译器根据我的循环返回"name not found"?
- C++模板错误:"invalid explicitly-specified argument for template parameter"
- SDL_CreateTextureFromSurface() "Invalid texture"错误?
- C++ "Invalid use of 'this' in non-member function" ,
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- C++错误:" 'class' does not name a type"和"invalid use of incomplete type ‘struct ...' "
- 为什么我在愿望控制台上加载 dll 时会得到"invalid command name " MZ " "?
- 'Invalid Name' alDeleteBuffers 函数的错误