2013-08-10 6 views
2

Im, создающий библиотеку виртуальной файловой системы, которую я хочу добавить в любой .exes , для этого мне нужно подключить все функции файлов Windows.Захват файловой системы

Я знаю, что есть много этих функций, но они являются API высокого уровня, есть ли какой-либо исчерпывающий список низкоуровневых функций, используемых этими?

, что я имею в виду ZwOpenFile < - NtOpenFile < - OpenFile и т.д. (но только UserMode)

Что мне нужно, это минимально возможный набор funcs зацепить, чтобы покрыть всю обработку файловой системы. его немного сложно перевернуть это из API окон.

У меня есть обложки (чтение файлов только сейчас и, конечно же, не завершено), но мне также нужен файл write/directory enum.

Что странно, что, например FindFirstFileA использует ZwOpenFile

ZwOpenFile hook. ObjectName : \??\D:\VFS\* Handle : 20 
NtQueryDirectoryFileHook hook. Handle : 20 
NtQueryDirectoryFileHook hook. Handle : 20 
D:/VFS/Test 
D:/VFS/test2.txt 
D:/VFS/test3.txt 
NtQueryDirectoryFileHook hook. Handle : 20 
ZwOpenFile hook. ObjectName : \??\D:\VFS\Test\* Handle : 24 
NtQueryDirectoryFileHook hook. Handle : 24 
NtQueryDirectoryFileHook hook. Handle : 24 
D:/VFS/Test/huh.txt 
NtQueryDirectoryFileHook hook. Handle : 24 
ZwOpenFile hook. ObjectName : \??\C:\Windows\system32\apphelp.dll Handle : 44 

Функции интереса:

NtCreateFile 
NtOpenFile 
NtLockFile 
NtUnlockFile 
NtReadFile 
NtWriteFile 
NtClose 

NtWriteFileGather 
NtReadFileScatter 

NtQueryDirectoryFile 

NtQueryInformationFile 
NtSetInformationFile 

related 


NtQueryVolumeInformationFile 
MapViewOfFile 
NtOpenSection 
NtUnmapViewOfSection 

NtFsControlFile 
NtDeviceIoControlFile 
NtNotifyChangeDirectoryFile 
+0

http://www.openrce.org/reference_library/win32_call_chains/XPSP2/KERNEL32 Я действительно не хочу копать все это – n00b

+4

Не было бы лучше написать драйвер фильтра файловой системы? –

+0

Это точная противоположность тому, что я хочу сделать. Я хочу, чтобы exe и его активы (включая dlls inis и т. Д.) В одном файле (если они были изменены с сохранением на hdd), здесь я устанавливаю драйвер на машине клиента;/ – n00b

ответ

1

Вам нужно ZwCreateFile для подключения открытия файла или создания; ZwDeleteFile для подключения удаления файлов; также вам нужны ZwLockFile и ZwUnlockFile, если вы хотите контролировать блокировку файлов; подключение ZwQueryInformationFile и ZwSetInformationFile поможет вам обнаружить изменения в информации о файлах. Вам также необходимо подключить ZwReadFile и ZwWriteFile, если вы хотите контролировать чтение из файла и писать на него; и ZwMapViewOfSection/ZwUnmapViewOfSection для работы с сопоставлениями файлов.

Для перечня каталогов вам необходимо подключить ZwQueryDirectoryFile.

Все эти функции можно легко подключить к usermode.

+0

Im allready делает это (все равно), но покрывает ли он все возможные api высокого уровня? мой опыт работы с внутренними компонентами Windows говорит мне, что есть некоторые более сложные функции, которые лежат вокруг, чтобы ударить меня по спине :) – n00b

+0

Я уверен, что этого достаточно, чтобы охватить все основные операции с файлами. Все API-интерфейсы высокого уровня в любом случае называют эти службы Zw *. – deselect

+0

Какую версию Windows вы используете? Я посмотрел в отладчике сейчас, и нет никаких NOP перед функциями Zw * :( – deselect

Смежные вопросы