Главная / Цифровая археология / Инструменты цифровой археологии / Описание файлов с отладочной информацией

Для более гибкого использования отладочная информация хранится отдельно от бинарных файлов. Файлы с отладочной информацией представляют собой текстовые файлы, информация в которых хранится в специальном формате.

Отладочная информация может формироваться ассемблером - для последующего использования в отладчике. Дизассемблер при формировании исходного текста также принимает во внимание содержимое указанного файла с отладочной информацией. Отладочная информация также может модифицироваться отладчиком, что очень удобно для реверс-инженеринга. Отладочную информацию можно также исправлять обычным текстовым редактором.

Формат файла с отладочной информацией может расширяться по мере развития функциональности программ, работающих с этими файлами.

При отладке можно использовать несколько файлов с отладочной информацией. Например один файл подгружается с отладочной информацией об отлаживаемой программе, а другой - о системном BIOS. Тогда проще будет понимать взаимодействие программой с системным программным обеспечением.

Формат файла

Информация в файле отладочной информации хранится построчно. Общий формат строки следующий:

<имя метки>:[адрес]<; строка комментария><; строка комментария>...

Адрес - обязательное поле. Имя метки и комментарии - необязательные параметры. Для одного адреса допускается несколько строк отладночной информации.

Если в строке отладочной информацией присутствует и название метки и комментарий, то комментарий будет расположен перед меткой вначале строки.

Если в строке с отладочной информацией присутствует только комментарий, то он будет располагаться справа от мнемоники, расположенной по данному адресу. Чтобы комментарий располагался перед мнемоникой вначале строки, необходимо начать его с двух символов "точка с запятой".

Чтобы комментарий разделить на несколько строк, необходимо в месте переноса на следующую строку поставить символ "точка с запятой". Таким образом формируются многострочные комментарии.

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

В разных приложениях стиль формирования исходного текста на основании данных в отладочной информации может отличаться.

Примеры

label:2000; This Subroutine draws a character
может выглядеть как:
;This subroutine draws a character
label:	 PUSH  B
далее
label:2000; Some comment
:2000; One more comment
может выглядеть так:
;Some comment
label:	 JMP  qweqwe     ; One more comment
пример многострочного комментария:
:2000; At this point; we gonna do cool stuff
Будет выглядеть примерно так:
    PUSH  B ; At this point
            ; we gonna do cool stuff

Планируемые расширения

Необходимо расширить формат файла, чтобы обозначать типизацию данных. Например, хранение данных в виде байтов, слов, строк.

Если какой-то код вызывается косвенно, то дизассемблеру необходимо подсказывать, что данные, начинающиеся с какого-то адреса необходимо продизассемблировать как код.