Адрес индекса стека сборки - PullRequest
1 голос
/ 07 января 2012

Я пытаюсь отладить программу с помощью ollydbg, и у меня есть сомнения по поводу индексации адреса режима с использованием префикса SS.

Вот снимок экрана:

В этот момент инструкция

MOV BYTE PTR SS:[EBP-1],BL

переместит 8 битов с EBX на адрес, указанный в EBP(0012FDCC), вычтя из одного - 0012FDCB.

Если выше -не правильно, пожалуйста, скажите мне.

В программе ollydbg в правом нижнем углу есть представление стека с первым столбцом по адресу.Почему нет записи в 0012FDCB, куда 0012FDCB указывает?

1 Ответ

2 голосов
/ 07 января 2012

Я ничего не знаю о ollydbg; надеюсь, кто-то, кто знаком с ним, также отправит ответ.

Ваше понимание того, что инструкция, которую вы нам показали, будет в основном правильным: оно переместит содержимое BL (который является младшим 8-битным EBX) по адресу в стеке сегмент, обозначенный [EBP минус 1]. Если EBP равен 0012FDCCh, то байт будет сохранен в 0012FDCBh.

Обычно мы не говорим, что 0012FDCBh указывает где-либо, мы просто говорим, что это ячейка памяти, которая в данном случае содержит байт, хотя технически было бы правильнее сказать, что это адрес ячейки памяти. и, следовательно, в некотором смысле число «указывает» на байт. Но мы предпочитаем думать о указателях или регистрах, указывающих на память, а не о чистых числах.

Понятия не имею, почему ollydbg не показывает 0012FDCBh. Вы уверены, что это не показывает? Это возможно показывает 0012FDCCh и 0012FDC8h? Если это так, то он просто показывает стековую память, сгруппированную в DWORD, поэтому 0012FDCBh не отображается, поскольку он соответствует одному из четырех байтов, которые находятся в DWORD в 0012FDC8h. Посмотрите на значение DWORD, хранящееся в 0012FDC8h, пошаговое выполнение инструкции MOV, и вы увидите, что самый старший байт этого слова меняется на значение BL. (Если значение в этом адресе отличается от значения BL.) Ollydbg также может показывать память, сгруппированную в строки, длина которых превышает один DWORD, но применяется тот же принцип.

...