Вверх ↑
Этот топик читают: Гость
Ответов: 35
Рейтинг: 0
#1: 2022-05-14 09:06:15 ЛС | профиль | цитата
доброго времени суток, подскажите пожалуйста как можно сделать утилиту которая сможет контролировать вносимые изменения в реестр Windows, блокировать внесение каких то определённых записей, которые мне известны, и вести лог изменений, но главное чтоб программа не тормозила систему.
карма: 0

0
Ответов: 4630
Рейтинг: 749
#2: 2022-05-14 17:04:08 ЛС | профиль | цитата
Мониторить изменения в реестре в реальном времени - этот компонент. Только невозможно узнать какой именно подключ/значение изменилось (придется делать снимки ветки и сравнивать или проверять интересующее значение).
Для блокировки, вероятно, нужно делать свой сервис/драйвер, который будет перехватывать такие операции. На HiAsm этого никто не делал. Можно после детекта изменения возвращать предыдущее значение

Редактировалось 1 раз(а), последний 2022-05-14 17:05:45
карма: 26

1
Голосовали:prostov
Ответов: 35
Рейтинг: 0
#3: 2022-05-15 09:30:33 ЛС | профиль | цитата
Netspirit писал(а):


спасибо, а и за чего он не может узнать какой именно подключ/значение изменилось, в чём проблема?
я покопался по форумам но везде говорят про специальный модификатор ядра, называется CmRegisterCallback,
с использованием через API, но внятной информации по ней я так и не нашёл,
да и у меня пока недостаточно знаний для такого.
мне ещё попадались форумы где на С++ такое сделано без сторонних библиотек,
но найти человека который бы смог сделать библиотеку на С++ для использования по API,
очень сложно, искать по каким то площадкам сомнительно.
карма: 0

0
Ответов: 4630
Рейтинг: 749
#4: 2022-05-15 18:13:15 ЛС | профиль | цитата
prostov писал(а):
а и за чего он не может узнать какой именно подключ/значение изменилось, в чём проблема?
Используемые в нем функции системы не предоставляют такой возможности. Более подробный мониторинг возможен при реализации на основе Event Tracing for Windows (ETW) - примерно как в программе Sysinternals Process Monitor. Но в HiAsm пока никто не реализовал.
карма: 26

0
Ответов: 2059
Рейтинг: 132
#5: 2022-05-15 21:14:30 ЛС | профиль | цитата
Можно сделать перехват https://forum.hiasm.com/getfile/39451 Позволяет использовать методы объектов и функций Win API в качестве функций обратного вызова.
Когда то так делал и всё работало.
Суть, как работает:

procedure TAutoClickOKThread.Execute;
var
Callback: PCallbackThunk;
begin
Callback := VirtualAlloc(nil, SizeOf(Callback^),
Mem_Commit, Page_Execute_ReadWrite);
try
Callback.POPEDX := $5A;
Callback.MOVEAX := $B8;
Callback.SelfPtr := Self;
Callback.PUSHEAX := $50;
Callback.PUSHEDX := $52;
Callback.JMP := $E9;
Callback.JmpOffset := Integer(@TAutoClickOKThread.cbEnumWindowsClickOK) - Integer(@Callback.JMP) - 5;

EnumWindows(Callback, 0);
finally
VirtualFree(Callback);
end;
end;

Редактировалось 3 раз(а), последний 2022-05-15 21:17:22
карма: 6

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)