Обучающая сборка и IDA

Пытаюсь научиться сборке/разборке. Я создал базовый Hello World C EXE (с простой функцией добавления) и закинул его в бесплатную версию IDA.

Я как бы вижу, что происходит. Просто чтобы уточнить... Что делает следующее?

var_D8= dword ptr -0D8h
var_14= dword ptr -14h
var_8= dword ptr -8

Он показывает три переменные DWORD. Что такое -0D8H? -14ч? -8? Адреса памяти? Я просто добавляю 15 + 1.

Извините, я новичок в IDA и Assembly.

Спасибо


person user1373685    schedule 03.05.2012    source источник
comment
IDA тоже не могла этого понять, поэтому просто сделала неуклюжую декларацию. Вероятно, используется как смещение от EBP, локальной переменной.   -  person Hans Passant    schedule 04.05.2012


Ответы (1)


IDA создает специальную структуру для описания стека текущих функций. Адреса мест в этой структуре являются смещениями от адреса возврата (который также сохраняется в стеке и упоминается как «r» в окне просмотра стека). И это определяет простые смещения от него. Компиляторы сохраняют в стеке локальные переменные, и это представление переменных в стеке. Прочтите книгу IDA Pro для более подробной информации по этой теме.

person Evgenii Gostiukhin    schedule 03.05.2012