Отладка компонентов памяти с помощью Visual Studio

Я использую печально известную библиотеку Blackbone для сопоставления/внедрения другого модуля в другой процесс и выполнения его кода.

Обычно для отладки внедренного модуля мне приходится подключать отладчик Windbg к захваченному процессу, сканировать загруженные модули с помощью команды .imgscan и соответственно загружать символы.

Мне было интересно, возможно ли такое, используя старую добрую визуальную студию. В VS есть опция, вкладка символов, для загрузки всех символов для всех загруженных модулей, но это не дает того же эффекта, что и .imgscan /l. Таким образом, я получаю неразрешенный стек вызовов (только адреса памяти) и только разборку.


person igal k    schedule 31.10.2016    source источник
comment
@HansPassant: не с внедренными модулями ... См. debug-injected-remote-thread-with-symbols-not-a-dll-just-a-thread?forum=windbg" rel="nofollow noreferrer">social.msdn.microsoft.com/Forums/vstudio/en-US / и т. д.   -  person conio    schedule 01.11.2016
comment
Но DLL отсутствует в списке окон модулей, поэтому щелкнуть ее правой кнопкой мыши довольно сложно.   -  person conio    schedule 02.11.2016


Ответы (1)


Я сомневаюсь, что что-то изменилось с тех пор, как вы спросили ">Настройка отладчика Visual Studio C++ для поддержки символов для модулей, загруженных из памяти. Ответ по-прежнему:

WinDbg — это низкоуровневый отладчик, который позволяет это сделать. Отладчик Visual Studio не является отладчиком низкого уровня и не может этого сделать.

Blackbone преднамеренно и злонамеренно удаляет модуль из списков загружаемых PEB модулей (см. BBUnlinkFromLoader), если она даже удосужилась загрузить их более или менее разумным образом. Вы хотите скрыть модуль из списка модулей? ВС говорит: «Хорошо».

Если это так важно для вас, вы можете попробовать использовать отладчик WinDbg из графического интерфейса Visual Studio, но это все равно будет WinDbg со всеми его преимуществами и недостатками. (Думаю, требуется установка WDK.)

person conio    schedule 01.11.2016