Опознание GUID в IDA
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 12.09.21 13:41
Оценка:
Когда-то я довольно часто работал с IDA, а потом — все меньше и меньше. В какой-то момент увидел, что она стала показывать GUID'ы в нормальном формате, и порадовался, что наконец-то сподобились сделать простейший разбор. Но вот приспичило поковырять модуль, работающий с COM, и обнаружил, что в нормальном виде GUID'ы показываются только при наличии доступной PDB модуля. Без нее — как и двадцать лет назад: только в виде структуры, и никаких тебе символических имен. Ну и никаких интерфейсов, соответственно.

Поначалу решил, что это из-за того, что у меня версии Free (7.0 и 7.6). Погуглил — у Hex-Rays GUID'ы вообще упоминаются лишь вскользь в паре-тройке мест, а пользователи IDA вовсю извращаются с плагинами на IDC, Си и Питоне.

Со времени появления type libraries в IDA я как-то наивно полагал, что, раз библиотека Win SDK создается из соответствующих заголовков, то в ней должны быть и COM-интерфейсы, и GUID'ы, поскольку это весьма существенная часть виндового SDK. Но, судя по всему, они включают в TIL только константы, определенные через #define.

Там действительно все настолько плохо, или я чего не догоняю?
дизассемблер GUID IID CLSID SDK
Re: Опознание GUID в IDA
От: pva  
Дата: 13.09.21 05:43
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Там действительно все настолько плохо, или я чего не догоняю?

Оно просто мало кому надо, вот и не заморачиваются. Системные GUIDы покрыты, а для пользовательских все не так однозначно.
newbie
Re[2]: Опознание GUID в IDA
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 13.09.21 05:53
Оценка:
Здравствуйте, pva, Вы писали:

pva>Оно просто мало кому надо


Мало кому приходилось (и сейчас приходится) изучать модули на COM? Что-то не верится.

pva>Системные GUIDы покрыты


Так мне и нужны системные, с остальными я уж как-нибудь вручную. Но без PDB вообще никакие GUID'ы не опознаются.

pva>а для пользовательских все не так однозначно.


Какая между ними разница? Если адрес передается в функцию типа CoCreateInstance, UuidFromString и т.п. — коню понятно, что это GUID. Почему б его не показать в человеческом виде, чтоб можно было найти текстовым поиском, а не двоичным?
Re[3]: Опознание GUID в IDA
От: pva  
Дата: 13.09.21 09:43
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Так мне и нужны системные, с остальными я уж как-нибудь вручную. Но без PDB вообще никакие GUID'ы не опознаются.

Попробуй сделать на GUIDе:
— (U)ndefine
— Alt+Q (define structure)
— choose a standard GUID struct type
— OK
У тебя в списке структур должна быть импортирована стандартная структура GUID _GUID. Ее и используй. Если не помогло, попробуй IID назначить.
Если все сработает, то ида назначит корректное имя этому адресу.

ЕМ>Какая между ними разница? Если адрес передается в функцию типа CoCreateInstance, UuidFromString и т.п. — коню понятно, что это GUID. Почему б его не показать в человеческом виде, чтоб можно было найти текстовым поиском, а не двоичным?

Я не разраб иды, вопрос не по адресу. Я помню что сталкивался с тем что ида не могла распознать гуиды в некоторых версиях. И помню что иногда помогала инструкция, что я привел выше.
newbie
Re[4]: Опознание GUID в IDA
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 13.09.21 10:36
Оценка:
Здравствуйте, pva, Вы писали:

pva>У тебя в списке структур должна быть импортирована стандартная структура GUID _GUID. Ее и используй. Если не помогло, попробуй IID назначить.

pva>Если все сработает, то ида назначит корректное имя этому адресу.

Это не IDA назначает, а плагин COM Helper (то есть, тот самый костыль). Автоматом, в ходе фонового анализа, он этого делать не умеет. Если тех GUID'ов десятки-сотни, все это придется делать руками. Ну и этого плагина нет во Freeware-версии, а покупать или добывать ломаную, чтобы пользоваться пару-тройку раз в год, одинаково неудобно.

pva>Я не разраб иды, вопрос не по адресу.


Это скорее вопрос в пространство. Когда такая неадекватность в массовом софте, ее еще можно понять, но в профессиональном...
Re: Опознание GUID в IDA
От: morgot  
Дата: 31.10.21 17:15
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Когда-то я довольно часто работал с IDA, а потом — все меньше и меньше. В какой-то момент увидел, что она стала показывать GUID'ы в нормальном формате, и порадовался, что наконец-то сподобились сделать простейший разбор. Но вот приспичило поковырять модуль, работающий с COM, и обнаружил, что в нормальном виде GUID'ы показываются только при наличии доступной PDB модуля. Без нее — как и двадцать лет назад: только в виде структуры, и никаких тебе символических имен. Ну и никаких интерфейсов, соответственно.


Этот плагин не смотрели? https://github.com/airbus-cert/comida
Re[2]: Опознание GUID в IDA
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 31.10.21 17:29
Оценка:
Здравствуйте, morgot, Вы писали:

M>Этот плагин не смотрели? https://github.com/airbus-cert/comida


Спасибо, раньше не попадался. Но, судя по описанию, он опять-таки преобразует только известные GUID'ы. А по-хорошему, дизассемблер должен сам если не подставлять имена, то хотя бы показывать каноническую форму UUID в комментариях. Он же ограничивается тем, что ставит struct GUID, от которой толку чуть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.