![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Vitam1n |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.6.2014 Репутация: нет Всего: нет |
Привет всем!
Сейчас изучаю PE-формат, вкуриваю это дело потихоньку. Но вот с ресурсами зашел в тупик. Проблема в следующем: не могу получить указатель на сегмент ресурсов (либо получаю его, но все равно как-то криво). Вот код:
Вот. Тут уже код с небольшими следами экспериментов, я пробовал разные способы из разных источников. Далее. Если предположить, что указатель я получил правильно, то все равно какая-то чушь получается. Если верить МСДН и миллиону других источников, то этот указатель либо указывает на потомка типа IMAGE_RESOURCE_DIRECTORY_ENTRY, либо непосредственно на ресурс, но, как правило, нужно пройти пару поддиректорий. ОК:
Тут тоже код уже со следами экспериментов, я уже начал путаться. В цикле я ищу узел, который указывает на потомка (свойство DataIsDirectory), нахожу, но отладчик опять показывает какую-то чушь. В частности, кол-во ресурсов в приложении определяется суммой значений полей NumberOfNamedEntries и NumberOfIdEntries. Но у меня во время "прогулки" по простому виндовому блокноту сумма значений = 33 тысячи с лишним ресурсов. И, если смотреть под отладчиком, то я ни разу не получу Id ресурса < 19000. А ведь предопределенных ресурсов не так много, и, например, id иконки = 3. В общем, я окончательно запутался, помогите, пожалуйста, кто может. Только прошу, не посылайте в гугл, МСДН, в поиск, на сайт журнала "Хакер", к статьям Питрека и Криса Касперски, а также на форумы wasm.ru, exelab.ru и прочие. Я там уже был и читал похожие темы. Везде только теория, во всех книгах и статьях, как правило, разбор секции импорта, а действительно толковых кодов по перебору ресурсов нет. Ну или есть, но на асме, я а я с ним еще не подружился. Спасибо за внимание. |
||||
|
|||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Учитывая, что никакого рабочего кода Вы не представили -- мы тожэ можэт только гадать, что Вы написали неправильно.
PS И да, если непонятен формат -- то писать на Си -- довольно сложный метод его для себя усянить. Возьмите HEX-редактор, калькулятор и блокнот для записей. |
|||
|
||||
| Vitam1n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 7.6.2014 Репутация: нет Всего: нет |
Сам формат-то я более-менее понял. С точки зрения теории там не так уж все сложно. Гораздо больше меня интересует практическая реализация.
Вот полный код, который я запускаю. Код взят из интернета, мое "творчество" начинается уже на работе с ресурсами.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |