Получение информации об исполняемом коде из exe / pdb - PullRequest
2 голосов
/ 09 июня 2009

Мне нужно извлечь код (но не данные!) Из классических файлов win32 exe / dll. Ясно, что я не могу сделать это только с извлечением содержимого сегмента кода (потому что сегмент кода также содержит данные - например, таблицы переходов) и что мне нужна помощь от компилятора.

*. Файлы карт хороши, но они содержат только адреса функций, т.е. самое безопасное, что я могу сделать, это начать с этого адреса и обрабатывать до первой инструкции возврата / перехода (потому что часть функции может содержать упомянутые данные )

*. Pdb файлы лучше, но я не уверен, какие инструменты использовать для извлечения подобной информации - я взглянул на DbgHelp и DIA SDK, последний кажется правильным, но это не так выглядит очень просто. Итак, мой вопрос / вопросы:

  1. Насколько вам известно, извлечь информацию о позиции кода / данных (адрес + длина) можно только через DbgHelp?
  2. Если DIA SDK - единственный способ, есть ли какая-то идея, к чему мне обращаться, чтобы получить такую ​​информацию? (этот COM-материал довольно тяжелый)
  3. Есть ли другой способ?

Конечно, меня беспокоит, прежде всего, Visual Studio, компиляция исходного кода на C / C ++.

Спасибо за любую подсказку.

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

Существует PDB экстрактор для загрузки на странице здесь: http://undocumented.rawol.com. Может извлекать всю информацию, когда вы используете параметр / type. Здесь также есть статья со средством просмотра PDB: http://www.codeproject.com/KB/bugs/PdbParser.aspx, но она извлекает меньше информации.

Обе утилиты поставляются с исходным кодом.

0 голосов
/ 16 марта 2010

Ну, я только что прочитал на днях, что DIA намного проще в использовании из C # (ссылки на источник для простой программы); Еще одна программа, которая продолжает появляться в моих поисках Google, - это PDB Cracker , которая также имеет исходный код и, вероятно, больше подходит для предполагаемого приложения.

...