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

 eXeL@B —› Вопросы новичков —› IDA 6.8 массивы структур и xref
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2017 18:16
· Личное сообщение · #1

Ковыряю одну старую прогу. Цель понять как оно работает, и поднять немного скил. По большей части использу. HexRays и проблем особых нет.
Но в программе есть достаточно много массивов стуктур, достаточно приличных размеров(4-5 килобайт на один элемент структуры и по 1000 элеметов в массиве).
Чтобы удобней было разбиратся делаю следуюзее в local types создаю структуру нужного размера. Потом нахожу первый элемента массива и делаю на его месте массив на нужный размер и число элементов. После чего указываю тип переменной который создал в local types.
Всё работает как надо при декомпиляции функций всё хорошо читается. Но попытка поискать где используется этот массив через jump to xref показыват только функции где было обращение к первому элементу идёт.
Можно ли это както исправить и если да то как?




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 19 ноября 2017 18:24 · Поправил: difexacaw
· Личное сообщение · #2

Mailbox

> о попытка поискать где используется этот массив через jump to xref показыват только функции где было обращение к первому элементу идёт.

Индексация наверно ?
Формат ia: P = B + I*S + D.
Так адресуется массив - через индексную компоненту, которая умножается на размер указателя.

Intel® 64 and IA-32 architectures software developer's manual volume 1: Basic architecture

-----
vx




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2017 18:29
· Личное сообщение · #3

Нет есть куча функций где идёт прямое общащение к одному из элемементов.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 19 ноября 2017 18:37
· Личное сообщение · #4

в окне структур видны рефы со структур ?
в настройках опций иды указать количество рефов побольше и должны все отобразится
и иду обновить, уже давно 7.0 на паблике




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 19 ноября 2017 18:40
· Личное сообщение · #5

Mailbox

Тогда в чём состоит задача, сформулируйте её и покажите проблемное место в коде. Почему нужно каждый раз вливаться в ваш разум и использовать хрустальный шар

Вы можете чётко сформулировать задачу, что бы можно было её решить без гадания на шаре ?

-----
vx




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2017 20:05 · Поправил: Mailbox
· Личное сообщение · #6

Попробую есть для примера такой код: https://pastebin.com/W8TtLcpa
Компилирую без оптимизаций.
Запускаю IDA скармливаю ей файл на выходе из того что мне надо вот такое получаю https://pastebin.com/4XRiYSWM
В общемто тут видно что массив лежит по адресу dword_40AA00
Добавляю в Local types структуры object_save и objects
Перехожу к переменной делаю из нее массив и задаю тип objects
Code:
  1. .bss:0040AA00 ; objects byte_40AA00[]
  2. .bss:0040AA00 byte_40AA00     db 3DC510h dup(?)


После чего при деклмпиляции функций имею вот какое https://pastebin.com/XTju6jT0
Тоесть в целом всё хорошо, но если я в функции sub_401493 выбираю переменную и жму Jump to xref... то вижу в списке только функцию sub_40135D
А я там хочу видеть ещё sub_401493 и sub_401464




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 19 ноября 2017 21:07 · Поправил: reversecode
· Личное сообщение · #7

.bss:0040AA00 ; objects byte_40AA00[]
.bss:0040AA00 byte_40AA00 db 3DC510h dup(?)
должен выглядеть по другому
используйте Alt+Q что бы натянуть на массив структуры

обновите иду, флоаты плохо у вас распознаются, это в последней версии поправили

насчет рефов, я уже сказал, в окне структс, по поводу отсутвия их в jump to xref или баг (смотреть в новой иде надо) или из за того что плохо натянуты структуры


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


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