У меня есть DLL поставщика, которая ищет значение в ветке реестра HKLM, чтобы изменить поведение DLL. Это ужасная альтернатива простому логическому знаку, переданному API. Есть ли способ чтения DLL из «локальной» версии переменной, которая устанавливается во время выполнения?Могу ли я перенаправить вызов реестра из своего приложения?
0
A
ответ
1
Вы можете подключить API-интерфейс реестра с помощью патча таблицы импорта вашей сторонней dll. Вам нужно будет исправить RegCreateKey(Ex)/RegOpenKey(ex)
и RegGetValue
, и каждый раз, когда вызывается первый, вам нужно выяснить, является ли путь тем, который вы ищете. Если это так - сохраните полученный HKEY и проверьте следующие вызовы RegGetValue, чтобы узнать, передается ли ему HKEY. Если это так, и имя значения совпадает с именем, которое вы ищете, просто замените результат на все, что вам нужно.
http://www.codeproject.com/Articles/2082/API-hooking-revealed http://www.codeproject.com/Articles/6265/Process-wide-API-spying-an-ultimate-hack