|
NtOpenFile хук и вызов - Вопросы и ответы, обсуждения - Ваши вопросы по C/C++ только в данном разделе |
11.08.2014, 21:07
|
#1
|
|
|
|
Пехотинец
|
Регистрация: 10.10.2011
Сообщений: 65
Популярность: 772
Сказал(а) спасибо: 58
Поблагодарили 57 раз(а) в 32 сообщениях
|
NtOpenFile хук и вызов
Вот кусок исходника
Код:
#define InitializeObjectAttributes( p, n, a, r, s ) { \
(p)->Length = sizeof( OBJECT_ATTRIBUTES ); \
(p)->RootDirectory = r; \
(p)->Attributes = a; \
(p)->ObjectName = n; \
(p)->SecurityDescriptor = s; \
(p)->SecurityQualityOfService = NULL; \
}
#define RtlInitUnicodeString( DestinationString, SourceString ) {\
(DestinationString)->MaximumLength = lstrlenW(SourceString) * sizeof(WCHAR); \
(DestinationString)->Length = (DestinationString)->MaximumLength; \
(DestinationString)->Buffer = SourceString; \
}
#define FILE_DIRECTORY_FILE (0x00000001)
#define FILE_WRITE_THROUGH (0x00000002)
#define FILE_SEQUENTIAL_ONLY (0x00000004)
#define FILE_NON_DIRECTORY_FILE (0x00000040)
#define FILE_NO_EA_KNOWLEDGE (0x00000200)
#define FILE_EIGHT_DOT_THREE_ONLY (0x00000400)
#define FILE_RANDOM_ACCESS (0x00000800)
#define FILE_DELETE_ON_CLOSE (0x00001000)
#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
typedef struct _IO_STATUS_BLOCK {
union {
NTSTATUS Status;
PVOID Pointer;
} DUMMYUNIONNAME;
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef struct _OBJECT_ATTRIBUTES {
ULONG Length;
HANDLE RootDirectory;
PUNICODE_STRING ObjectName;
ULONG Attributes;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES;
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
typedef NTSTATUS (NTAPI *_NtOpenFile) (PHANDLE FileHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PIO_STATUS_BLOCK IoStatusBlock,ULONG ShareAccess,ULONG OpenOptions);
int InStr(wchar_t* Str1, wchar_t* Str2)
{
int cStr1=0,cStr2=0,i;
while (Str1[cStr1]) cStr1++;
while (Str2[cStr2]) cStr2++;
if ((!cStr1)||(!cStr1)||(cStr1<cStr2)) return 0;
for (i=0; i<(cStr1-cStr2+1); i++) // search Str2 in string Str1
if(CompareStringW(LOCALE_USER_DEFAULT,0,Str1+i,cStr2,Str2,cStr2)==2) return i+1;
return 0;
}
//Функция вызова NtOpenFile
HANDLE MyOpenFile(LPCWSTR Filename)
{
PHANDLE myHandle = 0;
OBJECT_ATTRIBUTES attr;
IO_STATUS_BLOCK ISB;
UNICODE_STRING FileName;
wchar_t PathFileW[2000];
memset((PathFileW),0,sizeof(PathFileW));
int NumSymbol = InStr((wchar_t *)Filename,L"\\??\\");
if(NumSymbol != 1)
{
lstrcpyW(&PathFileW[0],L"\\??\\");
}
lstrcatW(PathFileW,Filename);
RtlInitUnicodeString(&FileName,PathFileW);
InitializeObjectAttributes(&attr, &FileName, 0, NULL, NULL);
nNtOpenFile(myHandle,GENERIC_READ | SYNCHRONIZE,&attr,&ISB,FILE_SHARE_READ,FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT);
return *myHandle;
}
Проблема в вызове MyOpenFile
MyOpenFile не хочет открывать файлы
Я наверное передаю не те аргументы функции ...
Прошу только исправить функцию вызова NtOpenFile на открытие файла (чтение) и (чтение + запись)
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Вызов функций
|
pia3333(4) |
Общение разработчиков |
3 |
03.09.2012 17:46 |
[Помогите!] Вызов npc из gm панели
|
Last_Light |
Вопросы и ответы, обсуждения |
2 |
11.05.2011 12:11 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 04:42.
|
|