2016-10-10 5 views
1

Я могу получить информацию о линии по адресу назначения, используя dbghelp.dll, позвонив по номеру SymGetLineFromAddr64() из dbghelp.dll.Можно ли получить код сборки с заданного адреса с помощью dbghelp.dll?

Он дает мне только исходные коды этого адреса (например, номер строки и имя файла). Однако в WinDBG я также могу получить ассемблерный код данного адреса. Я не уверен, как это сделать, используя dbghelp.dll. Если это невозможно, любая другая dll, которую я могу использовать?

+2

Это задание [отладчик] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff552179 (v = vs.85) .aspx), а не dbghelp.dll , Или используйте ReadProcessMemory(). –

ответ

1

Я не думаю, что вы можете получить демонстрационный листинг от dbghelp. Однако довольно легко, хотя и больше, чем вы, вероятно, хотите, интегрировать бесплатный код OllyDbg Disassembler 2.01 в ваш код, если при разборке строки указан правильный начальный адрес для инструкций; т. е .: вы не начинаете с адреса, который является средним инструктором, о котором я думаю, что dbghelp позаботится. То есть, если вы хотите разобрать x86-код.

Единственный трюк может состоять в том, чтобы получить, сколько байтов в длину соответствует текущей строке, чтобы вы знали, сколько разобрать, если вы хотите быть более любезным, чем жестко запрограммированное количество, скажем, 64 байт от начала текущей строки. Если вы предварительно перечислили все исходные строки для модуля через SymEnumLines(), вы можете использовать эту информацию для поиска не только текущей строки, но и количества байтов до следующей строки.

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

  • Нет связанных вопросов^_^