SEH на службе контрреволюции

       

Для первого потока процесса на


Для первого потока процесса на всех 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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий