eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме:
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Переполнение буфера в MSVS 2019 (исполнение стека)
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Статус: Участник

Создано: 13 ноября 2019 01:43 New!
Цитата · Личное сообщение · #1

Здравствуйте.

При реализации переполнения буфера внутри MS Visual Studio 2019 почему-то идет остановка во время исполнения команд на стеке. Хотя стоит ключ /GS- (Code Generation -> Security Check Disable).
В окне студии Debug -> Windows -> Exception settings везде убрал галочки.
Но по прежнему не дает выполнять команды на стеке после переполнения буфера и прыжка jmp esp.

Как убрать в студии прерывание выполнения команд? Я вроде это делал раньше в 2015 студии и проблем не было.


Ранг: 316.3 (мудрец)
Статус: Участник

Создано: 13 ноября 2019 02:08 · Поправил: difexacaw New!
Цитата · Личное сообщение · #2

alnight

> идет остановка во время исполнения команд на стеке.
> Как убрать в студии прерывание выполнения команд?

Вы понимаете что разбрасываете термины без понятия, у вас свой язык эльфов ?

> jmp esp

А ну ясно тогда. А это должно работать, защиты нет конечно.

Ранг: 1.0 (гость)
Статус: Участник

Создано: 13 ноября 2019 03:30 New!
Цитата · Личное сообщение · #3

difexacaw пишет:
Вы понимаете что разбрасываете термины без понятия, у вас свой язык эльфов ?


Где вы увидели эльфов?
В программе осуществляется переполнение буфера, выполняется команда jmp esp, после чего следующая команда должна быть выполнена та, что лежит по адресу стека, но вместо этого студией выбрасывается исключение:
Unhandled exception at 0x0019FF0C in buffer.exe: 0xC0000005: Access violation executing location 0x0019FF0C.. Вопрос - как настроить студию, чтобы она не ругалась на выполнение кода, расположенного на стеке?

Ранг: 68.4 (постоянный)
Статус: Участник

Создано: 13 ноября 2019 09:19 · Поправил: kunix New!
Цитата · Личное сообщение · #4

alnight, гуглите про NX бит.
Не факт, что VS тут вообще при чем. Скорее ваша OS делает стек non-executable.
Возможно, это можно исправить флажками в заголовке EXE, выставив их через опции линкера.


Ранг: 598.5 (!)
Статус: Модератор
Research & Development

Создано: 13 ноября 2019 10:25 New!
Цитата · Личное сообщение · #5

kunix пишет:
NX бит.

И в целом про Data Execution Prevention, DEP.


Ранг: 312.2 (мудрец)
Статус: Участник

Создано: 13 ноября 2019 15:19 New!
Цитата · Личное сообщение · #6

alnight пишет:
Unhandled exception at 0x0019FF0C in buffer.exe: 0xC0000005: Access violation executing location 0x0019FF0C

У стека по умолчанию страница не имеет прав на исполнение кода. Если выполнить VirtualProtect(-1, esp, size, PAGE_EXECUTE_READWITE, &oldProtect), то всё получится.

| Сообщение посчитали полезным: dosprog, plutos


Ранг: -1.3 (нарушитель)
Статус: Участник

Создано: 28 ноября 2019 02:51 New!
Цитата · Личное сообщение · #7

Если захочет записать 40 байт данных в буфер, выделено только 20 байт памяти .
Code:
  1.  
  2.  
  3.      #include <stdio.h>
  4.      
  5.     int main(int argc, char *argv[])
  6.     {
  7.              char buffer[250000];
  8.              strcpy(buffer, argv[1]);
  9.              return 0;
  10.              
  11.     }
  12.  
  13.  

Это называется переполнение буфера.


Ранг: 528.5 (!)
Статус: Участник
5KRT

Создано: 28 ноября 2019 14:31 · Поправил: Модератор New!
Цитата · Личное сообщение · #8

[OFFTOP]
Когда уже забанят чувака с ником Lobido? Тупо спамит не по теме в топиках


От модератора:
Пока перенесено в "Вопросы новичков" из "Основного"
 eXeL@B —› Вопросы новичков —› Переполнение буфера в MSVS 2019 (исполнение стека)

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS