Сейчас на форуме: tyns777, bezumchik (+4 невидимых)

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

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

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

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

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

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




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

alnight

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

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

> jmp esp

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

-----
vx




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

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

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


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



Ранг: 71.2 (постоянный), 33thx
Активность: 0.050.12
Статус: Участник

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

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




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

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

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

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

-----
EnJoy!





Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

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

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

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

-----
IZ.RU


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

Ранг: -1.3 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 28 ноября 2019 02:51
· Личное сообщение · #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.  

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




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

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

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


От модератора:
Пока перенесено в "Вопросы новичков" из "Основного"


-----
Research For Food



 eXeL@B —› Вопросы новичков —› Переполнение буфера в MSVS 2019 (исполнение стека)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати