Показать полную графическую версию : Перехват функций обращения к реестру в C#
Здравствуйте, помогите пожалуйста решить проблему. Мне необходимо перехватывать обращения любой программы к реестру и затем заменять реальное значение на свое. Как все это реализовать в C#?
Любезный
03-02-2012, 21:53
С какой целью это нужно? Написать что-то вредоносное?
А какже контроль целостности приложений в антивирусах? Они кстати тоже отслеживают обращения к реестру и попытки записать туда свои значения.
Нужно исключительно для себя, не каких злых умыслов. Тем более о каких вредоносных программах может идти речь используя C#.
Тем более о каких вредоносных программах может идти речь используя C#. »
Ну, да! Эти гадости, пишутся на папирусе!
А, вообще, смотрите исходники регмонитора.
Delirium
04-02-2012, 03:50
http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=C%23+monitoring+registry
http://stackoverflow.com/questions/826971/registry-watcher-c-sharp
http://www.codeproject.com/Articles/20973/RegMon
Этих ссылок более чем достаточно для решения вопроса.
Любезный
04-02-2012, 13:14
А какже контроль целостности приложений в антивирусах? Они кстати тоже отслеживают обращения к реестру и попытки записать туда свои значения. »
Но они не делают этого:
и затем заменять реальное значение на свое. »
http://www.google.ru/search?sourceid...oring+registry
http://stackoverflow.com/questions/8...atcher-c-sharp
http://www.codeproject.com/Articles/20973/RegMon
Этих ссылок более чем достаточно для решения вопроса. »
Извините, но я уже знаком с этими ссылками, я пришел на форум именно потому что у меня недостаточно знаний самому разобраться с информацией, котороя находиться по этим ссылкам и надеялся на помощь.
Delirium
05-02-2012, 14:18
geolone, в таком случае приводи свою проблему более развернуто. А то мы тут распинаемся, предоставляем данные, а ты, оказывается, уже все это читал и есть еще вопросы. В чем вопрос то конкретно?
В общем здесь http://stackoverflow.com/questions/8...atcher-c-sharp я понял, что в этом RegMon реализован мониторинг на стадии изменения ключа, но мне нужно перехватить функцию при попытке чтения ключа и затем вернуть значение которое задам сам, а может я все не так понял?
Дальше http://www.codeproject.com/Articles/20973/RegMon вообще глухо ниче не понимаю здесь.
Единственно что смог сделать так это подключить dll
[DllImport("advapi32.dll", SetLastError = true)] internal static extern UInt32 RegQueryValue( IntPtr hKey, [MarshalAs(UnmanagedType.LPStr)]string lpSubKey, StringBuilder lpValue, ref UInt32 lpcbValue);
как с ней работать дальше? какие функции нужно использовать для перехвата RegQueryValue? или может вообще я пошел не в ту степь?
Delirium
07-02-2012, 02:05
перехватить функцию при попытке чтения ключа »
Что подразумевается под ПОПЫТКОЙ чтения ключа? Вот чисто с твоей точки зрения?
В ссылке (http://stackoverflow.com/questions/826971/registry-watcher-c-sharp ) приводится 2 варианта. Второй да, отслеживает изменения после изменения. Первый же мониторит состояния путем
ManagementEventWatcher watcher = new ManagementEventWatcher(query);
Console.WriteLine("Waiting for an event...");
// Set up the delegate that will handle the change event.
watcher.EventArrived
EventWatcher как раз и мониторит все состояния и попытки доступа аналогично FileSystemWatcher.
Специально сделал проектик, создал раздел в реестре и попытался изменить значение. При нажатии на Enter программа перехватила мою попытку записать данные.
Посмотри вот это еще:
http://www.codeproject.com/Articles/30624/Asynchronous-Registry-Notification-Using-Stronglyhttp://msdn.microsoft.com/en-us/library/aa393035.aspx - здесь более подробно разобраны эти вопросы.
и вот это:
http://www.codeproject.com/Articles/27637/EasyHook-The-reinvention-of-Windows-API-hooking
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.