2012-04-16 3 views
0

У меня есть DLL поставщика, которая ищет значение в ветке реестра HKLM, чтобы изменить поведение DLL. Это ужасная альтернатива простому логическому знаку, переданному API. Есть ли способ чтения DLL из «локальной» версии переменной, которая устанавливается во время выполнения?Могу ли я перенаправить вызов реестра из своего приложения?

ответ

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