Для первого потока процесса на
Для первого потока процесса на всех NT-подобных системах он равен
FFDFF00h, а все последующие потоки уменьшают его на 1000h, т. е. мы получаем ряд указателей вида: 7FFDE000h, 7FFDD000h, 7FFDC000h…
В любом случае, протестировать вашу машину не помешает (вдруг какая-то из NT поведет себя иначе?). Протокол работы с отладчиком приводится ниже.
:cpu
Processor 00 Registers
----------------------
CS:EIP=0008:8046455B SS:ESP=0010:8047381C
EAX=00000000 EBX=FFDFF000 ECX=FFDFF890 EDX=00000023
ESI=8046F870 EDI=8046F5E0 EBP=FFDFF800 EFL=00000246
DS=0023 ES=0023
FS=0030 GS=0000
:gdt
Sel. Type Base Limit DPL Attributes
GDTbase=80036000 Limit=03FF
0008 Code32 00000000 FFFFFFFF 0 P RE
0010 Data32 00000000 FFFFFFFF 0 P RW
001B Code32 00000000 FFFFFFFF 3 P RE
0023 Data32 00000000 FFFFFFFF 3 P RW
0028 TSS32 80295000 000020AB 0 P B
0030 Data32
FFDFF000 00001FFF 0 P RW
003B Data32 00000000 00000FFF 3 P RW
Листинг 6 определение адреса указателя на текущий SEH-фрейм
Обратите внимание, FFDFF000h – это не адрес текущего SEH-фрейма. Это – указатель на фрейм. Сам же фрейм должен быть сформирован непосредственно в shell-коде, а в FFDFx000h занесен указатель на него (см. рис. 1).
Затем остается лишь совершить что-нибудь недозволенное или же пустить все на самотек, дождавшись пока исковерканная переполнением программа не вызовет исключения естественным путем и тогда наш SEH-обработчик немедленно получит управление. Остальное, как говориться, дело техники…
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий