Мониторинг обращений приложений к DLL - PullRequest
36 голосов
/ 22 ноября 2008

Вкратце: я хочу отслеживать выбранные вызовы из приложения в DLL.

У нас есть старое приложение VB6, для которого мы потеряли исходный код (тогда компания не использовала контроль исходного кода ...). Это приложение использует стороннюю DLL.

Я хочу использовать эту DLL в новом приложении C ++. К сожалению, API-интерфейс DLL документирован лишь частично, поэтому я не знаю, как вызывать некоторые функции. У меня есть подпись функций.

Поскольку приложение VB6 использует эту DLL, я хочу посмотреть, как она вызывает несколько функций. Пока что я пробовал или смотрел -

  1. APIHijack - требует, чтобы я написал код C ++ для каждой функции. Так как мне нужно только записать значения, это выглядит как излишество.
  2. EasyHook - аналогично 1, но позволяет писать в коде на языке .NET.
  3. OllyDbg с uHooker - Мне все еще нужно написать код для каждой функции, на этот раз в Python. Кроме того, мне нужно выполнить много преобразований в Python с использованием модуля struct, так как большинство функций передают значения с помощью указателей.

Поскольку мне нужно только регистрировать параметры функций, я хочу простое решение. Существует ли какой-либо автоматизированный инструмент, для которого я мог бы указать, какие функции следует отслеживать и их подпись, а затем получить подробный файл журнала?

Ответы [ 3 ]

25 голосов
/ 22 ноября 2008

«Статическое» решение (в том смысле, что оно может захватывать трассировку стека по требованию) будет Process Monitor .

Process Monitor

Более динамичным решением будет ApiMonitor , но оно может быть слишком старым, чтобы быть совместимым с приложениями для мониторинга. Хотя стоит попробовать.

http://www.rohitab.com/gallery/api-monitor-2-0/main-window.png

11 голосов
/ 22 ноября 2008

Еще несколько поисков в Google нашли то, что я искал: WinAPIOverride32 . Это позволяет писать текстовые файлы, такие как:

CustomApi.dll|void NameOfFunction(long param1, double& param2);

Позже эти файлы можно использовать внутри программы для записи всех вызовов на NameOfFunction. Теперь мне просто нужно выяснить, как регистрировать массивы и параметры структуры.

3 голосов
/ 27 апреля 2017

Visual Studio Addin Поток выполнения здесь :

Поток времени выполнения в реальном времени отслеживает и регистрирует вызовы функций и Параметры функции в вашем работающем приложении .NET и показывает стек трассировать дерево. Для мониторинга не требуется инструментарий или исходный код.

...