Форум программистов, компьютерный форум CyberForum.ru

Динамическое обнаружение ошибки переполнения буфера - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ результат не верный при решении задачи http://www.cyberforum.ru/cpp-beginners/thread1128314.html
//--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #include <conio.h> #include <math.h> #pragma hdrstop //---------------------------------------------------------------------------
C++ Какой момент не учитывает программа? Здравствуйте. Задача - http://acm.timus.ru/problem.aspx?space=1&num=1025 Не могу успокоиться, пока не решу задачу. Уже были перепробованы, пожалуй, все варианты, оговорённые в задании , программа выдаёт правильный ответ,но тест задача всё ещё не проходит. Т.е. при определённых входящих цифрах, ответ не правильный. Но, по сути, всё же правильно... Или я что-то пропускаю. На всякий случай:... http://www.cyberforum.ru/cpp-beginners/thread1128311.html
C++ Создать DLL для генерации перестановок и сочетаний
Необходимо создать DLL для генерации перестановок и сочетаний. Вот основная программа #include <stdio.h> int A; int cnt; int N; void Combination(int n, int m);
C++ Вывод структуры из файла
Подскажите, почему в текстовом файле не появляется текст? Как мне сделать, чтобы в структуре было не один человек? У меня задача стоит, вывести на экран из файла всех одногруппников по месяцам рождения, это обязательно сначала нужно вводить в файл с клавиатуры?или можно как-то по другому?:( #include <iostream> #include <conio.h> #include <string.h> #include <fstream> using namespace...
C++ Сделать дружественную функцию для критерия Кохрена http://www.cyberforum.ru/cpp-beginners/thread1128242.html
Не знаю как сделать дружественную функцию для критерия кохрена, все остальное работает #include <iostream> #include <math.h> #include <conio.h> using namespace std; class Sample {
C++ Как создать глобальную переменную? Создаю небольшой проект. Несколько функций и собственно тело программы. В теле объявил переменную int rep. Далее мне надо обратиться к ней в одной из функций, а так как в функции я её не объявил компилятор выдает ошибку. Как создать глобальную переменную, к которой можно обращаться как в функции так и за её приделами? подробнее

Показать сообщение отдельно
quwy
Native x86
 Аватар для quwy
2735 / 1824 / 477
Регистрация: 13.02.2013
Сообщений: 6,113
25.03.2014, 16:08     Динамическое обнаружение ошибки переполнения буфера
Цитата Сообщение от PlayaRC Посмотреть сообщение
Что, если запустить ее в фоновом режиме и спаммить все эти строки до тех пор, пока система не выдаст ошибку переполнения и не закроет программу.
Это скажет только о том, что в программе есть какая-то критическая ошибка, но никак не укажет даже на факт наличия переполнение буфера, не говоря уже о месте.

Цитата Сообщение от PlayaRC Посмотреть сообщение
Искать в нем строки и смотреть, есть ли там проверки для избежания переполнения
Эта задача крайне нетривиальна даже при наличии исходного кода. Что уж говорить про результаты дизассемблирования. Давайте прикинем на простейшем примере:
C
1
2
3
4
N = RecvSize(Socket);
p = malloc(N);
Recv(Socket, p);
...
Можете сказать, есть тут опасность переполнения?
1. Если RecvSize() возвращает размер данных независимо от Recv(), то за время выполнения потенциально долгого вызова malloc() могла прибежать еще сотня-другая байт и Recv() приняв их все, вызовет переполнение буфера p.
2. Если RecvSize() и Recv() являются свойствами/методами некоторого контекста состояние которого меняется только по требованию программиста, то переполнения быть не может потому что новые данные могут появиться только при вызове некого InquiryNetwork(), который в данном примере между RecvSize() и Recv() никто не вызывал.

Таким образом, без глубинного анализа всего, что касается ф-ций Recv() и RecvSize(), вообще нельзя сделать никаких выводов относительно наличия уязвимости. И это еще примитивнейшая ситуация, без всякого ветвления между вызовами функций, без вызова методов по ссылке и других не поддающихся статическому анализу прелестей. Может вы неправильно поняли задание? Или имелся в виду какой-то один конкретный случай переполнения, который более-менее узнаваем статически?
 
Текущее время: 02:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru