| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ресурсы exe-файла и PE-формат |
| Автор: Vitam1n 7.6.2014, 13:25 | ||||
| Привет всем! Сейчас изучаю PE-формат, вкуриваю это дело потихоньку. Но вот с ресурсами зашел в тупик. Проблема в следующем: не могу получить указатель на сегмент ресурсов (либо получаю его, но все равно как-то криво). Вот код:
Вот. Тут уже код с небольшими следами экспериментов, я пробовал разные способы из разных источников. Далее. Если предположить, что указатель я получил правильно, то все равно какая-то чушь получается. Если верить МСДН и миллиону других источников, то этот указатель либо указывает на потомка типа IMAGE_RESOURCE_DIRECTORY_ENTRY, либо непосредственно на ресурс, но, как правило, нужно пройти пару поддиректорий. ОК:
Тут тоже код уже со следами экспериментов, я уже начал путаться. В цикле я ищу узел, который указывает на потомка (свойство DataIsDirectory), нахожу, но отладчик опять показывает какую-то чушь. В частности, кол-во ресурсов в приложении определяется суммой значений полей NumberOfNamedEntries и NumberOfIdEntries. Но у меня во время "прогулки" по простому виндовому блокноту сумма значений = 33 тысячи с лишним ресурсов. И, если смотреть под отладчиком, то я ни разу не получу Id ресурса < 19000. А ведь предопределенных ресурсов не так много, и, например, id иконки = 3. В общем, я окончательно запутался, помогите, пожалуйста, кто может. Только прошу, не посылайте в гугл, МСДН, в поиск, на сайт журнала "Хакер", к статьям Питрека и Криса Касперски, а также на форумы wasm.ru, exelab.ru и прочие. Я там уже был и читал похожие темы. Везде только теория, во всех книгах и статьях, как правило, разбор секции импорта, а действительно толковых кодов по перебору ресурсов нет. Ну или есть, но на асме, я а я с ним еще не подружился. Спасибо за внимание. |
| Автор: tzirechnoy 7.6.2014, 14:47 |
| Учитывая, что никакого рабочего кода Вы не представили -- мы тожэ можэт только гадать, что Вы написали неправильно. PS И да, если непонятен формат -- то писать на Си -- довольно сложный метод его для себя усянить. Возьмите HEX-редактор, калькулятор и блокнот для записей. |
| Автор: Vitam1n 7.6.2014, 19:29 | ||
| Сам формат-то я более-менее понял. С точки зрения теории там не так уж все сложно. Гораздо больше меня интересует практическая реализация. Вот полный код, который я запускаю. Код взят из интернета, мое "творчество" начинается уже на работе с ресурсами.
|