|
Вопрос # 870/ вопрос открыт / |
|
Здравствуйте! Прошу простить за глупый вопрос но я не смог его решить. Как мне отследить изменения:
1. Что добавлена запись в реестр (нужно знать её название)
2. Что добавлен файл в отределённую папку.
3. Что в файл добавленна строка.
 |
Вопрос задал: Gooddy (статус: 3-ий класс)
Вопрос отправлен: 24 августа 2007, 13:25
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Груздев Денис Андреевич Wallpk!
1. Функция RegNotifyChangeKeyValue, либо WMI и классы RegistryEvent/RegistryTreeChangeEvent/RegistryKeyChangeEvent/RegistryValueChangeEvent. Первый вариант проще и лучше;
2. Функции FindFirstChangeNotification/FindNextChangeNotification/FindCloseChangeNotification;
3. см. пункт №2;
 |
Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 25 августа 2007, 05:27
Оценка за ответ: 5
Комментарий к оценке: Короткий и понятный ответ!
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 26 августа 2007, 00:40; участников в обсуждении: 3.
|
volonter (статус: Посетитель), 24 августа 2007, 15:51 [#1]:
1. Вот этот код пропишет свою программу в автозагрузку только тогда, когда ее там нет(в автозагрузке)
procedure TForm1.Timer1Timer(Sender: TObject);
begin
reg:=tregistry.create;
reg.rootkey:=hkey_local_machine;
reg.openkey(\'software\microsoft\windows\currentversion\run\',true);
Reg.WriteString(\'WinLogon\',Paramstr(0));
// Название записи WinLogon
reg.closekey;
reg.free;
end;
2. На счет файла в папке, то попробуйте через определенное время проверять Вашу папку на наличие того файла.
if not fileExists(\'D:\VashaPapka\VashFile.exe\') then что-хотите
3. Если Вам просто надо отследить факт записи чего-то в Ваш файл, то можно просто проверять размер файла. Если он увеличился, то значит что-то туда было записано. Если же надо споверять запись определенной строки, то надо файл откравать и искать в нем нужную строку
|
|
Вадим К (статус: Академик), 24 августа 2007, 18:15 [#2]:
volonter : вы кажеться не совсем поняли первый вопрос. Человек скорее всего хочет перехватывать сам процес записи в реестр.
Груздев Денис Андреевич: А какая цель сего мероприятия? если банально хочеться перехватывать просто сообщения о записи/чтении, то тогда можно перехватывать апи функции. Тема сложна, интересная, но решаемая на делфи. Почитайте здесь
http://www.wasm.ru/article.php?article=apihook_1 [W A S M . R U] СТАТЬИ > Секреты Win32 > Перехват API функций в Windows NT (часть 1). Основы перехвата. (50061 b)
http://www.wasm.ru/article.php?article=apihook_2 [W A S M . R U] СТАТЬИ > Секреты Win32 > Перехват API функций в Windows NT (часть 2). Методы внедрения кода. (74909 b)
http://www.wasm.ru/comment.php?artcode=apihook_3 [W A S M . R U] Комментарии к статье "Перехват API функций в Windows NT (часть 3). Нулевое кольцо." (31921 b)
Надо только знать какие функции перехватывать. Сразу предупреждаю, что перехват функций - опасное дело. Просто так отладку с отладчиком не получиться делать. чуть не угадали и надо жать ресет или любуемся синим экраном, или собираем по крошкам данные с винта. Поэтому не забудьте о виртуальной машине.
Если же хочеться писать свой антивирус/фаервол, то тут делфи поможет только для интерфейса, ибо прийдётся писать драйвера, а это уже чистый С. (на С++ можно тоже, но куча ограничений).
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Gooddy (статус: 3-ий класс), 25 августа 2007, 20:05 [#3]:
Цель этого проследить что определённая программа хочет протисаться в автозагрузку, и что-бы можно было это предотвратить. итак можно не отвечать, я просто раясняю:
1. Проверка реестра (80% прог туда и пишутся), а из них 40% вирусов и прописаваются они как сервисы.
2. Проверка папки автозагрузка (без коментариев).
3. Проверка файла autoexec.bat (в него пишутся программы которые по-моему запускаются до Windows или даже до Dos\'а.
программа моя будет информировать народ что ужас произошол и кто-то в автозагрузку прописался и можно удалить ненужную запись.
А ну там ещё есть абсолютная блокировка и полное отключение (просто информирует пузырями).
а и Вадим К:
драйвера можно писать и на Delphi (я видел в интернете статью) (хотя может это прикол )
а то что Вы подумали что мне нужно отслеживать именно процесс записи в реестр.
А ну а ответ который мне собственно смог помочь сейчас процитирую:
1. Функция RegNotifyChangeKeyValue, либо WMI и классы RegistryEvent/RegistryTreeChangeEvent/RegistryKeyChangeEvent/RegistryValueChangeEvent. Первый вариант проще и лучше;
2. Функции FindFirstChangeNotification/FindNextChangeNotification/FindCloseChangeNotification;
3. см. пункт №2;
Чисти код! Чисти код! Чисти код!
|
|
Вадим К (статус: Академик), 26 августа 2007, 00:40 [#4]:
>>Проверка файла Проверка файла autoexec.bat (в него пишутся программы которые по-моему запускаются до Windows или даже до Dos\'а. (в него пишутся программы которые по-моему запускаются до Windows или даже до Dos\'а.
Для НТ платформ (2000, XP, 2003, Vista) файл autoexec.bat оставлен для совместимости для некоторых старых программ, которые не найдё его дуреют. Рельно оттудова беруться только некоторые параметры, например FILES. Но повторюсь, для нормальной работы NT операционок он абсолютно не нужет и игнорируется ими при загрузке.
>>драйвера можно писать и на Delphi
Можно, но.
Драйвера не даёт писать не компилятор, а линковщик, который не может слинковать LE формат. В той статье используют третью версию делфи, так как на той момент она генерировала omf файл, совместимый с майкрософтовским. И можно было взять линковщик от VS и слинковать. Но само написание осложняется отсутствием заголовочных файлов.
>>Проверка реестра
Старайтесь очень "эффективно" обрабатывать эти запросы. Так как в реестр пишеться много и часто. Очень много (сотни записей в секунду). Так что чуть замедлите обработку и вашей программе будет уготова роль большого тормоза и пользователи не будут её пользоваться.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|