Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Получение данных из IMAGE_DIRECTORY_ENTRY_DEBUG
Посл.ответ Сообщение

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 27 февраля 2017 22:59
· Личное сообщение · #1

Подскажите, умные люди, до первого каталога PIMAGE_DEBUG_DIRECTORY я добираюсь и получаю из него значения. Но проблема в том, что в IMAGE_DIRECTORY_ENTRY_DEBUG может содержаться несколько записей, как мне получить значения из следующей?



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

Создано: 28 февраля 2017 00:18 · Поправил: deniskore
· Личное сообщение · #2

Дам вам несколько подсказок.

Вам нужно получить количество записей в дебаг директории.
Code:
  1. int items = optHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size / sizeof(IMAGE_DEBUG_DIRECTORY);


Затем вы находите нужную секцию используя адрес вашей дебаг директории.
Code:
  1. optHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].VirtualAddress;
  2. // для этого нужно обойти все директории и сравнивать VirtualAddress + SizeOfRawData
  3. // далее делаете цикл обхода на количество элементов (items)




Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 28 февраля 2017 01:03
· Личное сообщение · #3

deniskoredeniskore пишет:
int items =
Вам большое спасибо! Только меня начинает беспокоить ситуация, когда я получаю правильный результат, но не знаю почему. Не могли бы вы пояснить зачем надо делить
deniskore пишет:
optHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size / sizeof(IMAGE_DEBUG_DIRECTORY);

??




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 28 февраля 2017 03:47 · Поправил: plutos
· Личное сообщение · #4

Вот тут: http://www.debuginfo.com/articles/debuginfomatch.html вы найдете много полезной информации.

The number of entries in the debug directory can be obtained by dividing the size of the debug directory (as specified in the optional header’s data directory entry) by the size of IMAGE_DEBUG_DIRECTORY structure.

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: Gideon Vi

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 28 февраля 2017 21:37
· Личное сообщение · #5

Ребята спасибо вам огромное, я во всем разобрался. Моя ошибка была в том, что я по простоте душевной, почему то считал, что
Code:
  1. optHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size
содержит реальный размер всей информации которая туда записана. Но как обычно все не так. Там просто сумма структур IMAGE_DEBUG_DIRECTORY.


 eXeL@B —› Вопросы новичков —› Получение данных из IMAGE_DIRECTORY_ENTRY_DEBUG
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати