Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 22.01.2017
Сообщений: 16

Buffer Overflow

17.06.2018, 20:35. Показов 2169. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
int main(int argc, char **argv) {
    char string[16];
    strcpy(string, argv[1]);
}
Как массив string попадает в стек при Stackoverflow?
Буду очень признателен за помощь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2018, 20:35
Ответы с готовыми решениями:

Buffer Overflow атака на C++
Написал простенький код который работает хотя по идее не должен. #include <iostream> using namespace std; void myfunc(); int...

Где ошибка: ClearBuffer(Buffer,sizeof(Buffer)); WRITE(Buffer,test,20,ALL);
Cho ne pravilno v sledyushem code: #define ALL; ........ ClearBuffer(Buffer,sizeof(Buffer)); WRITE(Buffer,test,20,ALL); ...

Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy
Бывает ли на практике такое, что код #define size 1000; // some value int x, y; /* ... */ memcpy(y, x, (size + 1) * sizeof(int)); ...

9
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
17.06.2018, 21:02
Чего?
0
1 / 1 / 0
Регистрация: 22.01.2017
Сообщений: 16
17.06.2018, 21:14  [ТС]
Блин, неправильно написал заголовок. Там должно быть Buffer Overflow.
А насчет вопроса, при переполнении буффера же массив этот должен быть в стеке, чтобы функция strcpy записала данные туда и выполнила переполнение.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
17.06.2018, 21:21
Fire_Angel, юзай так, не переполнится)
C++
1
2
3
4
5
6
7
8
9
#include <cstring>
#include <iostream>
 
int main(int argc, char *argv[])
{
    char string[16];
    strncpy_s(string, argv[0], _TRUNCATE);
    std::cout << string << std::endl;
}
0
1 / 1 / 0
Регистрация: 22.01.2017
Сообщений: 16
17.06.2018, 21:23  [ТС]
Да не, мне интересно именно как сам массив попадает в стек. Откуда он там берется?
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
17.06.2018, 21:25
Fire_Angel, какой массив? char *argv[] что-ли?
0
1 / 1 / 0
Регистрация: 22.01.2017
Сообщений: 16
17.06.2018, 21:26  [ТС]
Не, string.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
17.06.2018, 21:44
Fire_Angel, При создании процесса, ему выделяется адресное пространство и куча. В это адресное пространство потом попадают все потоки процесса, которые обладают (каждый) Стеком.
При создании процесса всегда создается первичный поток, в нем создается Стек и все локальные данные попадают именно туда.

P.s. Динамические данные создаются в куче процесса
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
18.06.2018, 10:59
Fire_Angel, Хакинг. Искусство эксплойта
1
1 / 1 / 0
Регистрация: 22.01.2017
Сообщений: 16
18.06.2018, 13:02  [ТС]
То есть первичный поток исполняет код файла и держит в стеке статические данные? А после стека первичного потока, куда попадают данные? И почему эти статические переменные находятся не в сегменте данных? Или это специфика первичного потока?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2018, 13:02
Помогаю со студенческими работами здесь

Fwrite (buffer , sizeof(char), sizeof(buffer), pFile)
как записать часть массива чаров? допустим у нас arr; мне надо записать с позиции массива 500 до 600, 100 байтов как записать эту...

Exception class overflow with message floating point overflow
Прощу вашего совета в строке кода RxSpinEdit-&gt;Value=Step * (MyRound(RxSpinEdit-&gt;Value*Koef/Step)); функция MyRound int...

Expression: buffer != nullptr
Описать структуру с именем NOTE, содержащую следующие поля: Фамилия, имя. Номер телефона. Дата рождения.(массив из 3 чисел) ...

Buffer Overrun Issues
Собственно, запустил раз - все работает, два - уже не работает, танцы с бубном пробовал(серьезно) вот код: #include &lt;fstream&gt; ...

Strcpy_s выдает ошибку buffer is too small
Вот у меня есть пример простого кода, но почем-то в месте, где вызывается функция копирования, вылезает ошибка. Вроде все делаю правильно: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru