Привет! Начал немного дисасмить, столкнулся с такой проблемой: Создаю структуру в Ида. В этой структуре есть простые типы int, double и т.п. и есть сложные типа других структур. Если структура вложена в другую структуру, то нет проблем в ида это хорошо видно вот так struct_1.struct_2.field1. Однако, есть желание получить такой же вид, но уже с указателями на структуру в структуре. К сожалению пока не понял как это сделать, так как пойнтеры в структуре ида им просто присваивает тип dd, что естественно неудобно. Как рабочий вариант, я создают на этот указатель коммент, который указывает на реальную структуру, но в коде это не очень удобно отражается. У кого-нибудь есть приемлемое решение как показать структуру в коде, если есть только указатель на эту структуру в другой структуре. Уф. Надеюсь понятно объяснил.
Допустим есть такие структуры: Код (Text): 00000000 mystruct struc ; (sizeof=0x10) 00000000 field_0 dw ? 00000002 field_2 dw ? 00000004 pport dd ? 00000008 RegistryPath UNICODE_STRING ? 00000010 mystruct ends 00000010 00000000 ; --------------------------------------------------------------------------- 00000000 00000000 PPORT struc ; (sizeof=0xC) 00000000 field_0 dd ? 00000004 field_4 dd ? 00000008 field_8 dd ? 0000000C PPORT ends В коде происходит чтение из поля field_4 структуры pport указательн на которую находится в mystruct. В коде это будет выглядеть примерно так: Код (Text): mov eax,[ebp + mystruct.pport] mov edx,[eax + 4] //здесь поле field_4 //читается, что не удобно, лучше было //бы так: mov edx,[mystruct.pport.field_4]
Это понятно, только тогда это не наглядно, что pport является частью структуры mystruct. Получается как-будто это отдельная структура, что запутывает.
А разве является? там же поле указателя на PPORT (то есть, dd), а не само поле типа PPORT. То есть, обращение не mystruct.pport.field_4, а mystruct.pport->field_4.
на креклабе есть специальная тема о использовании ida где уже помоему все возможные вопросы обсудили покрайней мере ваш там тоже есть сходите и почитайте
Разобрался. Можно сделать так было так: Код (Text): 00000000 mystruct struc ; (sizeof=0x10) 00000000 field_0 dw ? 00000002 field_2 dw ? 00000004 pport dd ? 00000008 RegistryPath UNICODE_STRING ? 00000010 mystruct ends стало так: Код (Text): 00000000 mystruct struc ; (sizeof=0x10) 00000000 field_0 dw ? 00000002 field_2 dw ? 00000004 pport.PPORT dd ? 00000008 RegistryPath UNICODE_STRING ? 00000010 mystruct ends pport.PPORT теперь тип поля через точку. При щелчке на имени PPORT автоматически выходим на описание этого поля.