Парсинг плоскости Win32 Файл PE (Exe/DLL) в.NET

Я должен проанализировать простой Win32 DLL/Exe и заставить весь импорт и экспорт от него показывать на консоли или GUI (т.е. Формы Победы). Действительно ли возможно проанализировать Win32 DLL/Exe в C#.NET путем чтения его экспорта/таблиц импорта и получить управляемые типы от него? Поскольку это - неуправляемый PE.NET не делает позволяет Вам преобразовывать неуправляемые файлы PE в управляемые блоки.NET, это только генерирует управляемые сборки COM.

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

9
задан 4 revs, 3 users 63% 23 January 2012 в 23:53
поделиться

2 ответа

Анализ PE-файлов возможен с помощью документа спецификации переносимых исполняемых файлов Microsoft . Однако, как заметил Логан, подписи не включены в PE-файл; включены только имена экспортируемых функций.

ОБНОВЛЕНИЕ: если ваша dll - это библиотека C ++, созданная последней версией компилятора Microsoft C ++, то вы можете отменить декорирование искаженного имени, чтобы получить большую часть подписи, вызвав эту функцию: UnDecorateSymbolName из ] Средства отладки для Windows . Однако возвращаемое значение не включается в искаженное имя.

2
ответ дан 4 December 2019 в 22:27
поделиться

Что касается второй части на ваш вопрос, получить сигнатуры методов, это, как правило, невозможно. Эта информация обычно не хранится в самом PE. Для функций C ++ это возможно, потому что искаженное имя будет кодировать эту информацию, но многие библиотеки DLL не предоставляют интерфейсы C ++. Для интерфейсов COM эта информация хранится в библиотеке типов, часто встраиваемой как ресурс в PE. Чтобы увидеть, возможно ли это для конкретных dll, которые вы имеете в виду, вы можете использовать dumpbin и undec, чтобы увидеть, являются ли функции искаженными именами C ++. В противном случае вам понадобится другой источник информации, например файлы заголовков, для создания правильных подписей P / Invoke (в этом случае вам, вероятно, не нужно анализировать PE-файл).

2
ответ дан 4 December 2019 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: