Переполнение буфера

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Переполнение буфера

Сообщение GM » 07.07.2004 (Ср) 6:40

Вот вопрос почему через переполнение буфера можна захватить власть над компьютером?
Насколько я понимаю то если есть буфер:
char a[255];
То если его переполнить то в память можна записать зловредный(и не только) код.

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 07.07.2004 (Ср) 9:48

просто переписывается область памяти которая отвечает за то что программа выполняет далее...
и соответственно после этого выполняется нужный код
Ничто так не ограничивает полёт мысли программиста, как компилятор

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Re: Переполнение буфера

Сообщение Leon_ » 07.07.2004 (Ср) 10:08

:)
GM писал(а):захватить власть над компьютером?

Во-первых, зачем ее захватывать -- она и так у тебя. Процессор уже выполняет инструкции твоей программы -- это ли не "власть над компьютером"?
есть буфер:
char a[255];
То если его переполнить

то просто будет Run-time error (9). В зависимости от обработки ошибок это приведет либо к завершению твоей программы системой, либо (можно постараться) к краху самой системы. Но выйти за пределы адресного пространства своего процесса (тех самых 4 ГБ) так не получится.
Последний раз редактировалось Leon_ 08.07.2004 (Чт) 9:42, всего редактировалось 1 раз.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 07.07.2004 (Ср) 22:52

Наверное эта ошибка может возникнуть только на прогах, созданных компиляторами. С VB-шными такое врядли удастся провернуть. Виртуальная машина не даст.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 08.07.2004 (Чт) 6:34

Наверное эта ошибка может возникнуть только на прогах, созданных компиляторами. С VB-шными такое врядли удастся провернуть. Виртуальная машина не даст.

Ну а если в настройках VB включить Remove Array Bound Checks?[/quote][/code]

Keen
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 25.04.2004 (Вс) 10:45
Откуда: Россия => Москва

Сообщение Keen » 08.07.2004 (Чт) 9:41

GM писал(а):
Наверное эта ошибка может возникнуть только на прогах, созданных компиляторами. С VB-шными такое врядли удастся провернуть. Виртуальная машина не даст.

Ну а если в настройках VB включить Remove Array Bound Checks?
[/code][/quote]

Это, наверное, другое. Я пробовал отключать в своей игре - забавно, матричный массив бесконечный, в смысле можно просто выходить за рамки размера массивов :). Хотя иногда появляется что-то типа классического "Программа выполнила недопустимую операцию..." :) и все - программа выгружается из памяти.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 10.07.2004 (Сб) 15:01

GM писал(а):
Наверное эта ошибка может возникнуть только на прогах, созданных компиляторами. С VB-шными такое врядли удастся провернуть. Виртуальная машина не даст.

Ну а если в настройках VB включить Remove Array Bound Checks?
[/code][/quote]

Действительно.
Но...
На других языках программист сам должен проверять переполнение, а на VB за тебя это делает VM по умолчанию.
И раз уж ты таскаешь за собой виртуальную машину, то нет необходимости отказываться от этого бесплатного сервиса.
Никто наверное и не отказывается.
Эту опцию желательно задействовать если ты вообще не используешь циклы. Вероятно ускорит программу.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 128

    TopList