Мне нужно извлечь код (но не данные!) из классических файлов win32 exe/dll. Понятно, что я не могу сделать это только с извлечением содержимого сегмента кода (поскольку сегмент кода содержит также данные - например, таблицы переходов) и что мне нужна помощь компилятора.
Файлы *.map хороши, но они содержат только адреса функций, т.е. самое безопасное, что я могу сделать, это начать с этого адреса и обрабатывать до первой инструкции возврата/перехода (потому что часть функции может быть упомянута в данных)
Файлы *.pdb лучше, но я не уверен, какие инструменты использовать для извлечения такой информации — я взглянул на DbgHelp и DIA SDK, последний кажется правильным инструментом, но он не выглядит очень простым. . Итак, мой вопрос/вопросы:
- Насколько вам известно, информацию о позиции кода/данных (адрес + длина) можно извлечь только через DbgHelp?
- Если DIA SDK — единственный способ, есть идеи, что я должен вызвать для получения такой информации? (этот материал COM довольно тяжелый)
- Есть ли другой способ?
Конечно, меня беспокоит в первую очередь Visual Studio, компиляция исходного кода C/C++.
Спасибо за любую подсказку.