Секреты ассемблирования дизассемблерных листингов


сколлапсированные структуры в ассемблерном файле


Ассемблерный генератор IDA Pro поместил структуры в целевой файл, даже не удосужившись их автоматически развернуть! Что же, придется это сделать самостоятельно. Возвращаемся в IDA Pro, в меню "View" находим пункт "Open Subview", а там — "Structures" или просто жмем горячую клавишу <Shift-F9>
. Перед нами появляется окно с перечнем всех структур и для их разворота достаточно дать команду "View" à "Unhide all", после чего можно повторить генерацию ассемблерного файла, назвав его "demo_3.asm" (про директивы .386/.model flat мы не забываем, да?).

Поразительно, но количество ошибок трансляции совсем не уменьшается, а даже возрастает. И ассемблер по прежнему не может найти "развернутые" структуры. Что же ему мешает? Присмотревшись к логу ошибок повнимательнее, мы видим, что ругательству на неопределенный символ предшествует ошибка типа "operand must be a memory expression" (операнд должен быть выражением, адресующим память):

demo_3.asm(2561) : error A2027: operand must be a memory expression

demo_3.asm(2596) : error A2006: undefined symbol : StartupInfo

demo_3.asm(2599) : error A2006: undefined symbol : StartupInfo

demo_3.asm(2601) : error A2006: undefined symbol : StartupInfo



Содержание раздела