Слежка за приложением

AAlexander 11.03.2004 - 10:35 | Задача такая: Нужно вести подробный лог по процессу, в который записывать следующую инфу: 1)Чтение/Запись/Создание Файлов - путь, имя, может быть даже место в файле; 2)Чтение/Запись реестра - ключ, значение...; 3)Отправка/Прием данных по сети - Адрес, данные Подскажите, какими средствами/методами можно реализовать подобный шпионаж за конкретным приложением? А то разные программы в инете бывают, хочется убедиться, что не очередной троян... А также возможны иные примения данной проги. %) Всем помогавшим обещаю впоследствии выслать релиз с исходниками!
Sboyko 1 - 11.03.2004 - 10:43 | 1), 2) - перехват syscall'овских вызовов (естесно будет только в NT/2k/XP) 3) - задача творческая, но можно попробовать "инъекции" в сокетовские функции.
UE 2 - 11.03.2004 - 11:07 | 1, 2: afaik, исходники RegMon/FileMon открыты, так что ... см. www.sysinternals.com Эти утилиты работают под всеми версиями виндов.
Sboyko 3 - 11.03.2004 - 11:12 | Сырцы RegMon и FileMon закрыты уже давно, придется поискать по сусекам, но никак не на www.sysinternals.com FileMon кстати мало чем поможет, он основан на написании FS Filter Driver. А вот в RegMone как раз таки, перехват syscall - его и можно использовать как отправную точку.
AAlexander 4 - 11.03.2004 - 17:11 | Уважаемые! Я скреб на многих сусеках, даже один раз показалось, что мне повезло, но я так и не нашел исходников. Если есть у кого - скиньте, плиз!
Dr_Zver 5 - 13.03.2004 - 17:00 | Предлагается заменить системные dll, содержащие функции доступа к реестру, файловой системе и сокетам, самописанными.
AAlexander 6 - 13.03.2004 - 17:06 | (1) Поделитесь информацией: Что такое "syscall'овские вызовы"?
SBoyko 7 - 15.03.2004 - 09:32 | Навскидку могу дать строку для поиска в гугле : ищи KeServiceDescriptorTable Завтра выложу кусочек кода, где я перехватывал CreateFile.
SBoyko 8 - 15.03.2004 - 09:33 | P.S Первое что выдала гугля: http://he4dev.e1.bmstu.ru/HookSysCall/
AAlexander 9 - 16.03.2004 - 06:39 | Спасибо, жду с нетерпением! Ну а в MSDN есть что поискать?
SBoyko 10 - 17.03.2004 - 11:39 | Извиняюсь за задержку с ответом, но старые исходники так и не нашел, попытаюсь восстановить по памяти. В MSDN ничего нет. Для разработки такого приложения потребуется написать драйвер. Следовательно, перво наперво поставь DDK. В нем есть немного хелпа, даже исходники и примеры-сырцы, которые в качестве каркаса своего драйвера я бы не советовал использовать. Если нашел RegMon - это самый лучший хелп и пример вместе взятый. Так вот, вся байда в винде построена на системных вызовах. Это вызовы базовых функций ядра системы, все функции API так или иначе сводится к вызову этих базовых syscall вызовов, некоторые являются просто обёртками. Как правило, имена базовых функций начинаются с Zw и Nt. К примеру (не совсем правильно но все же), CreateFile является оберткой, которая вызывает NtCreateFile. Все syscallы исполняются в 0-м кольце защиты процессора (привилегированном режиме). Процесс перехода из 3-го кольца в 0-й описывать не буду, скажу что все системные функции имеют свой порядковый номер, обращение в ядре идет именно по номеру. mov eax, NumberFunction lea edx, [esp+04h] int 2eh Самое обидное, что NumberFunction менялись даже от сервис-пака к паку (после 2000 вроде это дело остановилось, но все равно в XP и 2000 совершенно разные номера для одних и тех же функций). Так вот, когда обработчик int 2eH начинает парсить "мусор" из 3-го кольца, он первым делом лезет в уже упомянутую мной таблицу KeServiceDescriptorTable - где приводит в соответствие номер функции (передаваемой в eax) и её адрес в памяти (ну ясно для чего : перегнать параметры из 3-го кольца в 0-е и передать управление собсно функции). Думаю дальнейший ход уже понятен - мы лезем в эту таблицу - ищем номер для нашей подменяемой функции - меняем по этому номеру адрес в таблице на свою syscall'овскую функцию. Естественно, и это оч важно: 1) Число и типы параметров нашей функции и подменяемой должны совпадать. 2) Вызов оригинальной фунции обязателен! Описано страшно и непонятно, но пишется очень легко. Зуб даю ;)

>>