и добрались до инструкции, возбудившей
; вот мы и добрались до инструкции, возбудившей исключение доступа
; она обращается к ячейке памяти, на которую указывает сумма
; регистров ECX и ESI
; а чему равно их значение? прокручиваем экран немного вверх и находим, что
; что ECX и ESI равны 0, о чем Доктор Ватсон нам и сообщает: "ds:000000"
; отметим, что этой информации можно верить, поскольку подстановка
; эффективного адреса осуществлялась непосредственно в момент исполнения
; теперь вспомним, что ESI содержит копию переданного функции аргумента
; и что ECX был обнулен явно, следовательно в выражении [ECX+ESI]
; регистр ESI – указатель, а ECX – индекс.
; раз ESI равен нулю, то нашей функции передали указатель на невыделенную
; область памяти. обычно это происходит либо вследствие алгоритмической
; ошибки в программе, либо вследствие исчерпания виртуальной памяти
; к сожалению, Доктор Ватсон не осуществляет дизассемблирование
; материнской функции, и какой из двух предполагаемых вариантов правильный
; нам остается лишь гадать… правда, можно дизассемблировать дамп памяти
; процесса (если, конечно, он был сохранен), но это уже не то…
00401018 03c7 add eax, edi
; сложить содержимое регистра EAX с регистром EDI и записать результат в EAX
0040101a 41 inc ecx
; увеличить ECX на единицу
0040101b 3bca cmp ecx,edx
0040101d 7cf5 jl 00407014
; до тех пор пока ECX < EDX, прыгать на адрес 407014
; (очевидно, мы имеем дело с циклом, управляемым счетчиком ECX)
; при интерактивной отладке мы могли бы принудительно выйти
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий