Какое API юзается для написания таких програм как FileMon и RegMon. Проги может и полезные, но совершенно не адаптированные для хакинга. Про какое API читать для организации сабжа?
А они собст-но никаких спец. API и не юзают. Они юзают два драйвера - VxD и SYS, которые и перехватывают системные вызовы для реестра и файлов в Win9x и NT соответственно.
_DEN_ лови, чиста сырцы файлмона. компилится ес-но не будет, т.к. все "ненужное" отсутствует з.ы. я не помню, какую версию я отправлял Володе для выкладке на сайте, вроде как эту же... 1570380160__filemon.rar
PavPS Ну как я понял та главная функция что там используют для мониторинга (присоединяет наш драйвер к другому)посылает вначале нам ирп а потом ведь всеравно отдаст его нужному драйверу.Хук получится только если мы сможем не дать настоящему драйверу получить этот ирп или изменим ирп на что то безобидное.поэтому вопрос: главная функция всегда отдает ирп настоящим дровам или мы можем недопустить этого
[ VOOrDOOluck: главная функция всегда отдает ирп настоящим дровам или мы можем недопустить этого ] Если это файервол или антивирусный сканер, то могут и не отдавать. Если монитор, то обязана отдавать. В общем случае можно делать с IRP всё что угодно.
krid24 монитор это хорошо но мне интересно во что же его можно развить.->Если это файервол или антивирусный сканер, то могут и не отдавать Four-F Как такое возможно.Направте на путь.
Например, все операции по открытию файла, переименованию, изменению атрибутов, листанию каталога и т.п. сводятся к формированию определенного IRP и посылке его нужному девайсу. Например, если ты не хочешь, чтоб пользовались первым флопом, то ставишь фильтр на \Device\Floppy0. И все IRP (ну может не всё, а какое-то подмножество), которые сначала будут влетать в фильтр, завершаешь с соответствующим кодом ошибки.
Four-F Так что же получается.Если я верну код ошибки то оригинальному драйверу обработчику ирп не дойдет? Весело,ничего не скажеш.
А с реестром еще веселее . Система ваще по нескольку раз в секунду туда залезает. В regmon'е, кстати другой прынцып перехвата - замена точек входа родных native фнкций на свои. Адреса родных хранятся в системной таблице (ее адрес лежит в переменной, котрую экспортирует ntoskrnl, т.е. драйверам она доступна). И можно заменить любую native функцию на свою. Регмон запоминает адреса родных (тех, которые для реестра) и в конце каждой своей вызывает родную. А перед завершением (или при остановке мониторинга) все восстанавливает.
krid24 Помоги.Че я делаю не так.Хочу попробовать хук как в регмоне. Но компилятор говорит что не могу преобразовать из PVOID в "указатель на функцию".(в HOOK_SYSCALL->InterlockedExchange)