Как вы извлекаете раздел RT_RCDATA из исполняемого файла Win32 (желательно в C #)? - PullRequest
0 голосов
/ 23 сентября 2008

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

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 23 сентября 2008

P / Invoke LoadResource будет вашей самой безопасной ставкой.

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

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

0 голосов
/ 28 ноября 2011

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

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

0 голосов
/ 23 сентября 2008

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

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

Эти методы имеют преимущество перед PInvoke в том, что они на 100% .NET, и вам не нужно возиться с маршалингом аргументов в / из типов данных платформы и убедитесь, что вы проверили все возвращаемые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...