SEOSERVISE - Защита информации.

 
   
 

Главная


 


Отслеживание " злонамеренных " байтов Теперь возвратимся к тому, на чем мы остановились выше. Вернемся к тому же фрагменту кода и подробно рассмотрим, как центральный процессор его обрабаты­вает и что содержится в оперативной памяти, стеке и регистрах во время его вы­ полнения. Вот этот фрагмент: void overflow ( void ) При запуске процедуры "переполнения" (в процессе выполнения функции overflown ) содержимое стека в точке, обозначенной символами <=, выглядит сле­ дующим образом: адрес адрес buff данные buff значение регистра ebp адрес возврата При вызове функции gtrcpy ( ) все байты строки «паше помещаются в буфер buff , содержащийся в стеке. Дополнительные байты записываются поверх ранее сохранен­ ного значения регистра ЕВР и адреса возврата. При завершении выполнения функции overflow !) содержимое регистра ЕВР восстанавливается из стека, т.е. из стека извлека­ ется сохраненный ранее адрес возврата. В нормальной ситуации в счетчике команд ( EIP ) содержится адрес ближайшей по­сле вызова функции инструкции. Поскольку обратный адрес был замещен другими байтами, регистр EIP будет указывать на другое местоположение. В результате при за­ пуске программы на экране появится сообщение Application Error , прекрасно знако­ мое в мире хакеров (рис. 14.1).

 

 

 

 

 

 
 

1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |40 |41 |42 |43 |44 |45 |46 |47 |48 |49 |50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |60 |61 |62 |63 |64 |65 |66 |67 |68 |69 |70 |71 |72 |73 |74 |75 |76 |77 |78 |79 |80 |81 |82 |83 |84 |85 |86 |87 |88 |89 |90 |91 |92 |93 |94 |95 |96 |97 |98 |99 |100 |