Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Проблема с перехватом функции ZwCreateFile


Автор: NT_AUTHORITY 30.1.2008, 09:16
Есть такая задача. Пишу программу для перехвата вызовов функции ZwCreateFile. Эта функция задекларирована у меня так:

Код

NTStatus = cardinal;

function ZwCreateFile(  FileHandle:PHANDLE;
                        DesiredAccess:ACCESS_MASK;
                        ObjectAttributes:PObjectAttributes;
                        IoStatusBlock:pointer;
                        AllocationSize:pointer;
                        FileAttributes,ShareAccess, CreateDisposition, CreateOptions:cardinal;
                        EaBuffer: pointer;
                        EaLength:cardinal): NTStatus;
                        stdcall; external 'ntdll.dll';


Здесь нас интересует структура PObjectAttributes, которая представляет из себя следующее:

Код

PObjectAttributes = ^TObjectAttributes;
TObjectAttributes = packed record
    Length:cardinal;
    RootDirectory:THANDLE;
    ObjectName:PWideString; //PUnicodeString, в идеале, но Delphi не воспринимает.
    SecurityDescriptor:PSECURITY_DESCRIPTOR;
    SecurityQualityOfService:Pointer;
    Attributes:cardinal;
end;


Мне отсюда надо взять имя файла, которое передаётся в эту структуру. Однако, оно представляет из себя какие-то "иероглифы". Кто знает, как это расшифровать? 

PS. Пробовал RtlUnicoeStringToAnsiString и WideCharToMultibyte - не помогло.
RtlUnicoeStringToAnsiString я объявил так:

Код

function RtlUnicodeStringToAnsiString(str:PChar;pUS:PWideString;bBool:boolean):NTStatus; stdcall; external 'ntdll.dll';

Автор: MetalFan 30.1.2008, 10:07
Цитата(NT_AUTHORITY @  30.1.2008,  09:16 Найти цитируемый пост)
PWideString

очень сомневаюсь, что там такой тип. скорее PWideChar...

Автор: EvilsInterrupt 30.1.2008, 12:12
NT_AUTHORITY, есть документ и называется "Талмуд черной магии" его чернокнижник Свен Шрайбер написал, там есть то, что тебе нужно! Есть еще шаманский бубен, называется livekd.exe.

Автор: bartram 30.1.2008, 19:46
NT_AUTHORITY, а структуру PObjectAttributes ты сам описывал или взял откуда-то?

Добавлено через 5 минут и 9 секунд
Цитата(NT_AUTHORITY @  30.1.2008,  11:16 Найти цитируемый пост)
PUnicodeString, в идеале, но Delphi не воспринимает.

Почему это не воспринимает?
Описывается так
Код

PUnicodeString = ^TUnicodeString;
  TUnicodeString = packed record
    Length: Word;
    MaximumLength: Word;
    Buffer: PWideChar;
end;


Автор: NT_AUTHORITY 2.2.2008, 11:01
Спасибо за PUnicodeString!  smile 


Цитата(EvilsInterrupt @  30.1.2008,  12:12 Найти цитируемый пост)
NT_AUTHORITY, есть документ и называется "Талмуд черной магии" его чернокнижник Свен Шрайбер написал, там есть то, что тебе нужно! Есть еще шаманский бубен, называется livekd.exe. 


Долго пытался понять, что тут имеется в виду... Насколько я понял, речь идёт о специальной электронной книге, где описаны все тонкости работы с недокументированными Zw... А если так, то нельзя ли дать на неё ссылку?

И последнее. Может, кто-нито знает, где взять готовые описания функций Zw... и документацию по ним (если таковая существует)?

Автор: ne0n 4.2.2008, 17:15
Цитата(NT_AUTHORITY @  2.2.2008,  11:01 Найти цитируемый пост)
А если так, то нельзя ли дать на неё ссылку?


Недокументированные возможности Windows 2000 Свен Шорайберг, в гугл!

Цитата(NT_AUTHORITY @  2.2.2008,  11:01 Найти цитируемый пост)
И последнее. Может, кто-нито знает, где взять готовые описания функций Zw... и документацию по ним (если таковая существует)?


Гэри Неббет. справочник по базовым функциям Api Windows NT/2000. искать там же!

Автор: NT_AUTHORITY 5.2.2008, 16:46
Всем спасибо, но с поставленной задачей я уже разобрался. Насчёт книг - там метров много (с инета качать неохота...)?

Автор: ne0n 6.2.2008, 01:04
Цитата(NT_AUTHORITY @  5.2.2008,  16:46 Найти цитируемый пост)
 Насчёт книг - там метров много (с инета качать неохота...)?


ну это смотря в каком формате найдешь, неббет в пдф на английском есть 2-х метровый, шрайбер на русском +примеры с CD 8 метров в дежавю!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)