powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
5 сообщений из 5, страница 1 из 1
Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
    #38593184
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте C:
Был некоторое время в чудесном и прекрасном Кёниге. Скучал по K&R, ибо он у меня распечатан в формате a4, и я не брал его с собой. По вечерам было скучно, и я думал что лучше, перечитать Мастера и Маргариту, или купить оригинал K&R. Оригинал не нашёл. А Булгаков был слишком объёмный. Зато нашёл книгу что указана в названии топика.
Возникли вопросы. Решил задать часть, ибо остальные могут отпасть после этих.

1. "..в низкоуровневом языке разрешён ПДП".
Я рассуждаю так. ОС это набор программ для управления железом. в ОС существуют(как тут написать это значком "Е" наборот ?) функции для ПДП. Значит в ОС существуют интерфейс для ПДП из прикладных программ. Программа выполняется в среде ОС(то ОС для выполняющейся программы как виртуальная машина ), таким образом в языке С/С++ реализованы механизмы работающие с интерфейсом ОС для ПДП. Потому правильней, мне показалось, будет фраза "..в низкоуровневом языке существует механизм ПДП", ибо язык сам по себе ничего не разрешает. Либо я ошибаюсь ?

2. "Когда кто-то говорит о переполнении статического буфера, он чаще всего имеет виду переполнение буфера в стеке".
Просто не очень понял фразу. под стеком имеет ввиду LIFO ?

3. "противник получает возможность изменить управляющую информацию". изменить команды ?

4. Что хорошего в том что адрес возврата хранится в регистре ?

5. Далее идёт пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// 19_buffer_overflow_ex1.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

void DontDoThis(char* input)
{
	char buf[16];
	strcpy(buf,input);
	printf("%s\n",buf);
}

int main(int argc, char* argv[])
{
	DontDoThis(*(argv)); //с TCHAR не работало кстати. В книге такая запись:
	//DontDoThis(argv[1]); 
	return 0;
}



я намеренно написал *argv чтобы не запускать программу через командную строку. И всё получилось. Я думал не получится.
Почему ? И ошибка и запись, всё прошло.

Мне пора( ещё вопросы, но на меня ругаются что я так долго :(

PS
mayton, я рад что в Крыму теперь спокойно C:
...
Рейтинг: 0 / 0
Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
    #38593233
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по-простому - это описание тех самых проблем которые возникают при выходе за пределы отведенного места в памяти. (Когда ты писал в 17-й элемент массива из 12 элементов). В умелых руках неумело написанная программа будет делать совсем не то что хотел разработчик. Это так называемые уязвимости, которые используют вирусы, трояны и т.п.

п.1. Ты ошибаешься. Высокоуровневые языки не дают ПДП.

п.2,3,4,5 Изучай ассемблер, тогда поймешь как данные можно превратить в исполняемый код и запустить.

PS Лучше читай дальше K&R. Эта книга сегодня тебе бесполезна (если вирусы писать не собираешься). Уязвимости ищут в популярном софте. Как напишешь что-нибудь, что будет установлено и использоваться хотя бы в миллионе экземпляров - вернешься к этой книге. До этого твоя программа как Неуловимый Джо из анекдота, которого никто не ловит, т.к. не надо.
...
Рейтинг: 0 / 0
Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
    #38593249
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury2. "Когда кто-то говорит о переполнении статического буфера, он чаще всего имеет виду переполнение буфера в стеке".
Просто не очень понял фразу. под стеком имеет ввиду LIFO ?
речь идёт о стеке вызовов
...
Рейтинг: 0 / 0
Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
    #38593533
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саш! Это [facepalm] какой-то. Я еще раз тебя прошу не писать информацию которая не имеет к С++ отношения.
...
Рейтинг: 0 / 0
Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
    #38593603
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, вообщем нужно изучать ассемблер.

В книге написано что С/С++ основные языки в которых возникает эта проблема. Да и примеры из С.

Администрация, закрывайте тему если это действительно так. Хотя лучше не закрывайте, через 2-3 месяца я к ней хочу вернуться. Вообщем как хотите.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ховард, Лебланк..19 смертельных грехов угрожающих безопасности программ. 1 Buffer overflow
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]