Отслеживать выполнение программы через .DLL в шестнадцатеричном представлении - PullRequest
0 голосов
/ 29 июня 2010

Есть ли способ следить за выполнением программы через код DLL в шестнадцатеричном формате?

Например, я хочу посмотреть, какие разделы только что прочитаны, когда я нажимаю кнопку.Это должно работать для x64 DLL.

Спасибо!

Ответы [ 5 ]

3 голосов
/ 29 июня 2010

Да, вы загружаете процесс в отладчик и выполняете его за один шаг.

2 голосов
/ 13 июля 2010
  1. Загрузить проект в visual studio.
  2. Нажмите «Play» или F5, чтобы запустить программу в отладчике.
  3. Вам нужно будет когда-нибудь остановить выполнение, чтобы начать пошаговое выполнение кода или ассемблера. Это можно сделать, вставив точку останова или прерывая выполнение, нажав команду прерывания в IDE Visual Studio.
  4. После остановки вы можете щелкнуть правой кнопкой мыши в окне просмотра кода и выбрать «Показать разборку». Затем он покажет вам инструкции машины.
  5. Также в окне просмотра в отладчике Visual Studio во всплывающем меню правой кнопкой мыши есть опция для отображения всех переменных в шестнадцатеричной форме. В последнее время я начинаю предпочитать сам шестнадцатеричный код, потому что я могу легче видеть неправильные шаблоны памяти.
0 голосов
/ 13 июля 2010

Отладка с использованием IDE не показывает эквивалентный для ассемблера язык выполнения инструкции IL.Вам нужно написать свои собственные хуки для правильного дизассемблера.

0 голосов
/ 13 июля 2010

Я не использовал его, но однажды я наткнулся на инструмент Intel, который анализирует контекст указателя инструкций и может использовать файлы символов для преобразования IP в фактическое имя функции ... VTune может быть?

Полагаю, могут быть и другие подобные инструменты

ОБНОВЛЕНИЕ: иначе. "статистические профилировщики" ...

0 голосов
/ 13 июля 2010

Вы можете использовать инструмент в http://ircdb.org для регистрации вызовов функций произвольных DLL.

Это имя SocketSpy, потому что изначально оно было создано для отслеживания только winsock.dll, но оно позволяет вам отслеживать другие библиотеки.

С http://fixunix.com/programmer/95098-tracing-library-dll-calls-win32.html

Использовать опцию-> Список точек останова по умолчанию Меню для добавления или удаления программных точек останова из подключенных DLL. Положить мягкий Точки останова только в нужной вам функции максимизировать время выполнения.

Мягкая точка останова означает, что socketspy не останавливается на этой точке останова, только Журнал информации о точках останова. Жесткий точка останова означает, что сокет ОСТАНОВИТЕСЬ в этой точке останова, и Откроется диалоговое окно точки останова. Уточнить какие звонки должны быть перехвачены ВСЕМ, ИЗ ФАЙЛА EXE или из DLL (Combobox).

Указать файл журнала Файл-> Открыть файл журнала меню, если вы хотите сохранить функцию Вызовы DLL в текстовый файл, включить ведение журнала (флажок).

Затем выберите новое или уже действующее действие. процесс (кнопка «Выбрать процесс»). инструмент может использоваться только в NT / 2000 / XP

Кроме того, существует StraceNT, который может отслеживать произвольные Dll. Он доступен бесплатно от http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm

...