Как взломанное приложение могло внедрить вредоносный код?

Теоретически это довольно просто, достаточно знать размер буфера или адрес памяти, по которому будет выполняться процессор, и написать инструкции для выполнения кода в конце заполненного буфера или с указанного адреса.

Но когда у меня когда-либо была программа на C, действующая с таким поведением случайно в моей собственной системе. ОС только что закрыла приложение. Так как же вообще возможно внедрить код, не заставляя ОС завершать процесс?


person dhein    schedule 23.06.2014    source источник
comment
en.wikipedia.org/wiki/Data_Execution_Prevention   -  person Remus Rusanu    schedule 23.06.2014
comment
Я думаю, это помогает: - stackoverflow .com/questions/1739349/   -  person Am_I_Helpful    schedule 23.06.2014
comment
@RemusRusanu Спасибо за статью, выглядит довольно приятно, но на первый взгляд это выглядит не как ответ о том, как это будет работать, а скорее как статья о методах предотвращения этого.   -  person dhein    schedule 23.06.2014
comment
Современные операционные системы и оборудование реализуют DEP специально для решения этой проблемы. Вот почему ваши попытки, вероятно, не сработали.   -  person Sergey L.    schedule 23.06.2014
comment
Это не было попытками. Я просто спросил себя, так как, с одной стороны, компилятор MSVC во многих случаях предупреждает меня о небезопасных вещах, которые могут привести к внедрению кода, а с другой стороны, уже почти 3 года я пишу код каждый день, и никогда когда-либо было переполнение, которое не было поймано ОС. Так что я просто смущен, почему они делают с этим такую ​​​​большую вещь, если в ОС есть способ предотвращения этого.   -  person dhein    schedule 23.06.2014
comment
Как вы говорите, переполнение буфера случайными данными обычно приводит к сбою приложения. Явные эксплойты буфера тщательно разработаны, чтобы выполнять какую-то полезную функцию (в глазах хакера), а не сбой.   -  person 500 - Internal Server Error    schedule 23.06.2014