· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› FlushFileBuffers

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Май 17, 2004 22:39:31

Пишу от имени PavPS, которому было лень искать эту тему.
***



Собственно – это обещеные результаты измучивания ntoskrnl.exe и NtFlushBuffersFile

Для тех кто против создания этой темы в виде новой: извиняюсь сразу, знаю, что мог продолжать в старой, но в списке и меня её уже нет, а лазить в другую ссылку влом. А коль уж обещал доложить о результатах (пусть даже некому и ненадо), то вот они (строго не судить)

1) Про базу ntoskrnl.exe.
Сказано было сразу, что грузится явно по разным адресам. По друзьям не ходил, но вот у меня уже отличается от указанной CARDINAL-ом константы :804D0000h. Но тут не особо интересно.
2) Про NtFlushBuffersFile. Да метод действенный, но из user-a И действительно, аналог есть в ядре. Из ntdll.dll он вызавается через KeServiceDescriptorTable с номером 4Dh. И действительно принимает 2 параметра. Конечно же можно его вызвать, но не просто так. Низя передовать handle файла, открытого без определенных флагов. У меня лично были загоны, что возвращалась ошибка ACCESS_DENIED если открыт без флага FILE_APPEND_DATA. Черт его знает почему. И наблюдался такой парадокс: Передаю handle только что измененного файла, типа сдампить. И ведь он дампит только как: читаю содержимое ч/з F3:TotalCommander – вижу, что файл изменен: изменены флаги, пересчитана checksum, а вот запускаю – то wind-овский лодер PE формата загружает старую версию файла в память – исполняет старый код. Типа как будто данные и не менялись. А если этот файл перенести на другой диск и обратно, то загружается уже в измененном виде. Все дело окозалось в флаге FILE_NO_INTERMEDIATE_BUFFERING.
3) А что касается использования просто флагов, то не фига не работает: изменяю данные, нажимаю Reset, загружаюсь – ничерта не сохранено, а вот если : (FILE_SYNCHRONOUS_IO_NONALERT OR FILE_NON_DIRECTORY_FILE OR FILE_WRITE_THROUGH OR FILE_NO_INTERMEDIATE_BUFFERING) + (FILE_WRITE_ATTRIBUTES OR FILE_APPEND_DATA) + NtFlushBuffersFile, то всё OK.

Всем бальшое спасиба!!!

Так что вот. IF чё не так, извиняйте.


Дата: Май 17, 2004 22:44:56

мерси :-)))

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043