2008-11-22 2 views
33

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

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

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

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

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

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

ответ

10

поиск Некоторые больше Google нашел то, что искал: WinAPIOverride32. Он позволяет писать текстовые файлы, такие как:

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

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

25

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

Process Monitor

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

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

+4

Похоже, что это только мониторинг функций Windows API. Мне нужно отслеживать не-Windows API DLL. Я что-то упускаю? – kshahar 2008-11-22 12:28:25

+0

Нет, действительно. Даже Process Monitor отобразит ваш стек DLL, но с «Неизвестным» для этого метода. – VonC 2008-11-22 12:45:39

3

Visual Studio Addin выполнения Flowhere:

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

Смежные вопросы