У меня есть Windows native application, которые содержат embedded resources, и я хотел бы получить к ним доступ, используя native API. Существуют ли встроенные функции, которые обрабатывают ресурсы (что-то похожее на FindResource/LoadResource), или мне нужно будет создать свой собственный PE-ридер для их извлечения?Как получить доступ к ресурсам PE, используя собственный API для Windows?
3
A
ответ
2
Ntdll экспортирует LdrFindResource_U
и LdrAccessResource
, что почти двойники FindResource и LoadResource соответственно. Для их использования вам понадобится копия GetModuleHandle. Wine источник (специально resource.c и module.c) может использоваться в качестве документации этих функций.
Если я могу спросить, почему вы пишете родное приложение? Если ресурсы отображаются в памяти, и я полагаю, что они были бы или вы можете легко сопоставить остальную часть исполняемого файла, вы можете получить к ним доступ, зная их адрес, поэтому никаких специальных API-интерфейсов не требуется. Какие типы встроенных ресурсов вы используете? –
@KubaOber: вам нужно собственное приложение, если вы хотите выполнить его до загрузки подсистемы Win32. * «Вы можете получить к ним доступ, зная их адрес» * - «FindResource» будет API, чтобы узнать адрес. – IInspectable
Точно, это приложение, которое должно быть выполнено до загрузки Win32. Если остальная часть исполняемого файла, содержащего ресурсы, не отображается в память, как я могу это сделать? И как я могу программно найти адрес ресурса, как только я его не определяю заранее (это задание компоновщика для размещения ресурса внутри исполняемого файла). –