Есть ли способ узнать, какое значение реестра было запрошено в Process Monitor?

279
Starhowl

NAME NOT FOUND отображается встолбце результатов Process Monitor, поэтому я собирался создать значение самостоятельно. Но я не знаю,пытались ли получить доступк двоичному , строковому или, скажем, DWORD . Кто-нибудь знает, есть ли способ выяснить это в случае RegQueryValue ?

RegQueryValue

2
Нужно ли вам использовать Process Monitor, как насчет такого инструмента, как API Monitor. Смотрите пример https://imgur.com/a/Ob8F3nB. По сути, если вы знаете, что вызываемый API - это RegQueryValueEx (это будет в стеке в PM), тогда четвертый параметр будет иметь тип - https://docs.microsoft.com/en-us/windows/desktop/api/ winreg / nf-winreg-regqueryvalueexa Помогает ли эта информация? HelpingHand 6 лет назад 0

1 ответ на вопрос

1
Ben N

Не совсем, но в некоторых случаях мы можем сделать правильное предположение.

RegQueryValueОперация в Process Monitor, по существу соответствует RegQueryValueExфункции при вызове. Эта функция имеет параметр с именем lpType, но это ...

Указатель на переменную, которая получает код, указывающий тип данных, сохраненных в указанном значении.

Акцент мой. Это делается для того, чтобы приложениям можно было узнать тип полученного ими значения. ( RegQueryValueExне заботится о типах данных, он просто передает байты. Это задача программы интерпретировать байты.) Даже если программа по какой-то причине указала тип, Process Monitor не сообщает значение при вводе функции, только при успешный выход.

Это, однако, сообщает «длина». По непонятным причинам это не то lpcbDataзначение, которое приложение предоставляет для определения размера буфера для результата - в 64-битной системе нужно вычесть 12, чтобы получить оригинал. Значение DWord занимает 4 байта, значение QWord занимает 8 байтов, а все остальные виды имеют переменную длину. (Программы могут также вообще не подготавливать память перед вызовом функции, просто чтобы проверить, существует ли значение.) Поэтому, если «длина», сообщаемая Process Monitor, равна 16, программа ожидает 4-байтовый фрагмент данных, что почти конечно DWord.