Интерпретировать аргументы вызова Windows Native API

Я анализирую исполняемый файл на основе его трассировки выполнения. Я получил трассировку выполнения с помощью инструмента NtTrace. Вывод представляет собой последовательность вызовов API с собственными аргументами. Мне удалось интерпретировать большинство вызовов API, кроме следующих:

NtQueryKey( KeyHandle=0x46a, KeyInformationClass=7 [KeyHandleTagsInformation], KeyInformation=0x312c4e0, Length=4, ResultLength=0x312c4dc [4] ) => 0

NtDeviceIoControlFile( FileHandle=0xbe4, Event=0xce8, ApcRoutine=null, ApcContext=null, IoStatusBlock=0x124cf2b0 [0/0xffc], IoControlCode=0x00012017, InputBuffer=0x124cf298, InputBufferLength=0x10, OutputBuffer=null, OutputBufferLength=0 ) => 0

В NtQueryKey как я могу отобразить KeyHandle=0x46a к фактическому ключу реестра. Далее в NtDeviceIoControlFile основанный на IoControlCode=0x00012017 можно ли найти это TCP_RECV, TCP_SEND и т. д...

Спасибо.

2 ответа

Process Monitor от Sysinternals (теперь часть Microsoft) покажет вам фактический путь к ключу при отображении активности реестра. Он также может контролировать сетевую активность.

Sysinternals Инструменты

Просто посмотрите в след, чтобы найти точку, в которой был обработан этот ключ. Возможно, вам придется повторить этот процесс рекурсивно, если ключ был открыт относительно другого ключа. В будущем я рекомендую использовать procmon от sysinternals. Выход намного лучше.

Другие вопросы по тегам