time отладчик показывает обрушение, произошедшие
00E552CC FFFFFFFF 0006DBB8 00000007
00E552D0 00000000 0006DBBC 000BA054
00E552D4 00E55524 0006DBC0 00000001
00E552D8 00000652 0006DBC4 000B9EE8
00E552DC 00000000 0006DBC8 000B0001
Листинг 11 just-in- time отладчик показывает обрушение, произошедшие внутри GetDocPtr

Рисунок 9 just-in-time отладчик показывает обрушение, произошедшие внутри GetDocPtr
Нажав <Shift-F9> мы можем проигнорировать исключение и продолжить выполнение программы, только ни ей, ни нам лучше от этого не станет, ведь структуры данных превратились в бессмысленную мешанину байт и хрен его знает в какой момент они были разрушены.
Приходится реконструировать скелет динозавра буквально по "косточкам". Прежде всего нам необходимо выяснить куда указывал ECX в момент вызова GetDocPtr(). Смотрим на стек — на его вершине находится адрес возврата в материнскую процедуру 75ACC4C8h. Ходим сюда дизассемблером (или самим отладчиком по <CTRL-G>, 75ACC4C8h) и видим, что перед вызовом функции GetDocPtr регистр ECX был сохранен в регистре ESI:
.text:75ACC4C1 mov esi, ecx
.text:75ACC4C3 call GetDocPtr@CElement@@QBEPAVCDoc@@XZ;CElement::GetDocPtr()
.text:75ACC4C8 mov si, [esi+6Ch]
Листинг 12 исследование материнской функции, вызывающей GetDocPtr
Следовательно, в момент сбоя регистр ESI указывает на структуру, из которой загружаются регистры ECX и EAX. Тройным нажатием <TAB> переходим в окно дампа, нажимаем <CTRL-G> и вводим регистр ESI или его непосредственное значение 00E552B0h (см. листинг 11 или рис. 9). Это и есть та структура данных, с которой мы уже сталкивались в дизассемблере, и которая, судя по карте памяти, лежит где-то в куче (на самом деле, OllyDbg не умеет работать с кучей и необходимо иметь определенный исследовательский опыт, чтобы выделить блоки динамической памяти из общей массы, soft-ice показал бы намного больше информации, но мы уже решили использовать Olly, так что не будем менять коней на переправе).
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий