что два двойных слова, лежащие
Возвращаясь к листингу 3.5, отметим, что два двойных слова, лежащие на верхушке стека, соответствуют машинным командам POP EDI и POP ESI, а следующий за ними адрес –— 4012FFh –— это тот самый адрес, управление которому передается командой 40136Fh:RET 8. Для продолжения раскрутки стека мы должны дизассемблировать код по этому адресу (листинг 3.1:0).
Листинг 3.10. Дизассемблерный листинг праматеринской функции ("бабушки")
004012FA call 00401350
004012FF cmp eax,0FFh
00401302 je 0040132D
00401304 push eax
00401305 lea eax,[esp+8]
00401309 push 405054h
0040130E push eax
0040130F call dword ptr ds:[4033B4h]
00401315 add esp,0Ch
00401318 lea ecx,[esp+4]
0040131C push 0
0040131E push 0
00401320 push ecx
00401321 mov ecx,esi
00401323 call 00401BC4
00401328 pop esi
00401329 add esp,64h
0040132C ret ; SS:[ESP] = 6C2923D8
Листинг 10 дизассемблерный листинг праматеринской функции ("бабушки")
Прокручивая экран вниз, мы замечаем инструкцию ADD ESP, 64, закрывающую текущий кадр стека. Еще восемь байт снимает инструкция 40136Fh:RET 8 и четыре байта оттягивает на себя 401328:POP ESI. Таким образом, позиция адреса возврата в стеке равна: current_ESP + 64h + 8 + 4 == 70h. Спускаемся на 70h байт ниже и видим адрес возврата из праматеринской функции (листинг3.11).:
Листинг 3.12. Адрес возврата из праматеринской функции
0012F500 77E61D49 6C2923D8 00403458 ß
00401328:POP ESI/ret;
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий