Как извлечь раздел RT_RCDATA из исполняемого файла Win32 (предпочтительно на C #)?

StackOverflow https://stackoverflow.com/questions/119117

  •  02-07-2019
  •  | 
  •  

Вопрос

Единственный известный мне способ сделать это в настоящее время - открыть EXE-файл в Visual Studio.Я бы хотел иметь возможность сделать это полностью на C #, если это возможно.Другие варианты включают в себя:

  • P/Вызов LoadResource() из Win32 API
  • Используя существующий инструмент (кто-нибудь знает такой?)
  • Другие идеи?

Спасибо!

Это было полезно?

Решение

P / Invoke LoadResource будет вашим самым безопасным выбором.

В противном случае вам придется написать свой собственный P/E процессор, например. Пример PE-процессора.Процессор - это не конец света, но, как вы можете видеть, гораздо более сложный процесс, чем P / Invoke.

Чуть не забыл, что касается инструментов, большинство P / E браузеров сделают это за вас.Например.P / E Explorer, который доступен, но на самом деле не разрабатывается.Я также использовал IDA Pro для подобных вещей.Быстрый плагин IDA сделал бы это легко.

Другие советы

Я предполагаю, что вы пытаетесь прочитать ресурс типа RCDATA из исполняемого файла (имейте в виду, что "исполняемый раздел" означает другое - он относится к частям .text, .data, .rdata и т.д. PE-файла).Если вы хотите прочитать это из текущей сборки, вот руководство, показывающее, как: Доступ к встроенным ресурсам с помощью GetManifestResourceStream, используя Получаем manifestresourcenames и GetManifestResourceStream Получить manifestresourcestream методы.

Если вы не хотите считывать его из текущего исполняемого файла, вы можете использовать метод, аналогичный показанному здесь.

Преимущество этих методов перед PInvoke в том, что они работают на 100%.ЧИСТЫЕ, и вам не нужно возиться с маршалингом аргументов для / из типов данных платформы и проверкой того, что вы проверили все возвращаемые значения.

Есть очень полезный библиотека для многих ресурсных задач в http://resourcelib.codeplex.com

Многие классы и функции действительно оборачивают эти вызовы window-api UpdateResource(...), и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top