eXeL@B —› Вопросы новичков —› IDA 6.8 массивы структур и xref |
Посл.ответ | Сообщение |
|
Создано: 19 ноября 2017 18:16 · Личное сообщение · #1 Ковыряю одну старую прогу. Цель понять как оно работает, и поднять немного скил. По большей части использу. HexRays и проблем особых нет. Но в программе есть достаточно много массивов стуктур, достаточно приличных размеров(4-5 килобайт на один элемент структуры и по 1000 элеметов в массиве). Чтобы удобней было разбиратся делаю следуюзее в local types создаю структуру нужного размера. Потом нахожу первый элемента массива и делаю на его месте массив на нужный размер и число элементов. После чего указываю тип переменной который создал в local types. Всё работает как надо при декомпиляции функций всё хорошо читается. Но попытка поискать где используется этот массив через jump to xref показыват только функции где было обращение к первому элементу идёт. Можно ли это както исправить и если да то как? |
|
Создано: 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 |
|
Создано: 19 ноября 2017 18:29 · Личное сообщение · #3 |
|
Создано: 19 ноября 2017 18:37 · Личное сообщение · #4 |
|
Создано: 19 ноября 2017 18:40 · Личное сообщение · #5 |
|
Создано: 19 ноября 2017 20:05 · Поправил: Mailbox · Личное сообщение · #6 Попробую есть для примера такой код: Компилирую без оптимизаций. Запускаю IDA скармливаю ей файл на выходе из того что мне надо вот такое получаю В общемто тут видно что массив лежит по адресу dword_40AA00 Добавляю в Local types структуры object_save и objects Перехожу к переменной делаю из нее массив и задаю тип objects Code:
После чего при деклмпиляции функций имею вот какое Тоесть в целом всё хорошо, но если я в функции sub_401493 выбираю переменную и жму Jump to xref... то вижу в списке только функцию sub_40135D А я там хочу видеть ещё sub_401493 и sub_401464 |
|
Создано: 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 |