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