Расположение встроенного ресурса в сборке

Как мы можем обнаружить местоположение встроенного ресурса в сборке .Net? Под «местоположением» я подразумеваю начальную и конечную позиции байтов в сборке. Есть ли какой-нибудь инструмент или пример кода для этого?

Заранее спасибо.


person Harry.B    schedule 21.07.2011    source источник
comment
Мне просто интересно, зачем тебе это знать?   -  person Chris Kooken    schedule 21.07.2011
comment
Вы можете получить ресурс, позвонив по телефону GetManifestResourceStream. Есть ли причина, по которой вам нужна эта должность?   -  person Mrchief    schedule 21.07.2011
comment
Мы работаем над решением для защиты встроенных ресурсов в сборке, поэтому нам нужно знать архитектуру ресурсов сборки.   -  person Harry.B    schedule 21.07.2011


Ответы (2)


Вам нужен PE-файл для чтения/парсера. Полная спецификация находится на msdn: http://msdn.microsoft.com/en-us/windows/hardware/gg463119

Управляемые ресурсы:

Этот синтаксический анализатор выглядит довольно близко к тому, что вам нужно: http://www.codeproject.com/KB/dotnet/asmex.aspx

И есть несколько других программ для чтения PE-файлов, этот тоже выглядит многообещающе, но не вызывает конкретно управляемые ресурсы. Вы также можете посмотреть статью Криса Стэнтона Изучение заголовков PE-файлов с помощью управляемых код.

Ресурсы Win32:

Ресурсы Win32 намного проще. Многие из одних и тех же считывателей PE будут смещаться в файл, чтобы найти ресурсы. Когда-то там есть четко определенный набор структур, которые определяют расположение ресурсов. MSDN определяет их и об этом писали другие. Несколько поисковых запросов в Google должны привести вас туда.

person csharptest.net    schedule 21.07.2011

Вы можете действовать методом проб и ошибок. Проверьте структуру байтов ресурса, который, как вы знаете, встроен, и попытайтесь найти его с помощью шестнадцатеричного редактора. Если у вас нет ресурса, попробуйте извлечь его с помощью Resource Hacker: http://www.angusj.com/resourcehacker/

person Madhur Ahuja    schedule 21.07.2011