Я должен проанализировать простой Win32 DLL/Exe и заставить весь импорт и экспорт от него показывать на консоли или GUI (т.е. Формы Победы). Действительно ли возможно проанализировать Win32 DLL/Exe в C#.NET путем чтения его экспорта/таблиц импорта и получить управляемые типы от него? Поскольку это - неуправляемый PE.NET не делает позволяет Вам преобразовывать неуправляемые файлы PE в управляемые блоки.NET, это только генерирует управляемые сборки COM.
Как я могу проанализировать эти таблицы и взять все его методы (подписи) в управляемой форме. (например, если символ* как аргумент, это должно отобразиться как IntPtr).
Анализ PE-файлов возможен с помощью документа спецификации переносимых исполняемых файлов Microsoft . Однако, как заметил Логан, подписи не включены в PE-файл; включены только имена экспортируемых функций.
ОБНОВЛЕНИЕ: если ваша dll - это библиотека C ++, созданная последней версией компилятора Microsoft C ++, то вы можете отменить декорирование искаженного имени, чтобы получить большую часть подписи, вызвав эту функцию: UnDecorateSymbolName из ] Средства отладки для Windows . Однако возвращаемое значение не включается в искаженное имя.
Что касается второй части на ваш вопрос, получить сигнатуры методов, это, как правило, невозможно. Эта информация обычно не хранится в самом PE. Для функций C ++ это возможно, потому что искаженное имя будет кодировать эту информацию, но многие библиотеки DLL не предоставляют интерфейсы C ++. Для интерфейсов COM эта информация хранится в библиотеке типов, часто встраиваемой как ресурс в PE. Чтобы увидеть, возможно ли это для конкретных dll, которые вы имеете в виду, вы можете использовать dumpbin и undec, чтобы увидеть, являются ли функции искаженными именами C ++. В противном случае вам понадобится другой источник информации, например файлы заголовков, для создания правильных подписей P / Invoke (в этом случае вам, вероятно, не нужно анализировать PE-файл).