Russian Qt Forum
Октябрь 02, 2024, 19:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: указатели или сами объекты...  (Прочитано 13852 раз)
mutineer
Гость
« Ответ #15 : Февраль 29, 2012, 12:09 »

а методы копировать не требуется. Нет?
Прошу показать каким образом можно скопировать метод (ну хотя бы один)

Ctrl+C / Ctrl+V же Смеющийся
Записан
Tonal
Гость
« Ответ #16 : Февраль 29, 2012, 13:50 »

Побитовое копирование реализуется битовыми операциями довольно просто, но нудно. Да и в большинстве случаев оно не нужно. Улыбающийся

А скопировать метод вполне можно, если архитектура машины Фон Неймоновская (для большинства современных это ещё так).
В этом случае код размещается в той же памяти что и данные. Значит для того, чтобы скопировать метод нужно узнать где он лежит в памяти и его размер.
Где лежит узнать элементарно - в С/С++ взятие адреса функции штатная операция.
А вот размер в общем случае не получишь. Можно только разными компиляторозависимыми хаками. Но почти в каждом конкретном случае какой-то путь можно найти. Улыбающийся
Записан
mutineer
Гость
« Ответ #17 : Февраль 29, 2012, 13:56 »

Побитовое копирование реализуется битовыми операциями довольно просто, но нудно. Да и в большинстве случаев оно не нужно. Улыбающийся

А скопировать метод вполне можно, если архитектура машины Фон Неймоновская (для большинства современных это ещё так).
В этом случае код размещается в той же памяти что и данные. Значит для того, чтобы скопировать метод нужно узнать где он лежит в памяти и его размер.
Где лежит узнать элементарно - в С/С++ взятие адреса функции штатная операция.
А вот размер в общем случае не получишь. Можно только разными компиляторозависимыми хаками. Но почти в каждом конкретном случае какой-то путь можно найти. Улыбающийся

А куда его копировать? Страницы, в которых лежит код, приложению для записи недоступны. А страницы с данными во всех современных операционках недоступны для выполнения. Да и за чтение из страниц кода операционка может по рукам надавать
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Февраль 29, 2012, 14:17 »

А куда его копировать? Страницы, в которых лежит код, приложению для записи недоступны. А страницы с данными во всех современных операционках недоступны для выполнения. Да и за чтение из страниц кода операционка может по рукам надавать
Ну сразу и лапки кверху  Улыбающийся  А садами-огородами, напр через PrestoChangoSelector? (потом ее как-то по-другому назвали).
Записан
BRE
Гость
« Ответ #19 : Февраль 29, 2012, 16:32 »

А куда его копировать? Страницы, в которых лежит код, приложению для записи недоступны. А страницы с данными во всех современных операционках недоступны для выполнения. Да и за чтение из страниц кода операционка может по рукам надавать
Подумай, как выполняются эксплоиды.
Записан
mutineer
Гость
« Ответ #20 : Февраль 29, 2012, 17:12 »

А куда его копировать? Страницы, в которых лежит код, приложению для записи недоступны. А страницы с данными во всех современных операционках недоступны для выполнения. Да и за чтение из страниц кода операционка может по рукам надавать
Подумай, как выполняются эксплоиды.

Через дыры в этих механизмах защиты, не?
« Последнее редактирование: Февраль 29, 2012, 17:14 от mutineer » Записан
BRE
Гость
« Ответ #21 : Февраль 29, 2012, 17:30 »

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

Записан
mutineer
Гость
« Ответ #22 : Февраль 29, 2012, 17:50 »

Конечно, для некоторых ОС есть некоторые патчи запрещающие это, но это - опция, которая как правило по умолчанию не включена.

Это какие-то старые данные. http://en.wikipedia.org/wiki/Data_Execution_Prevention
Цитировать
DEP was introduced on Linux in 2004 (kernel 2.6.8[2]), on Windows in 2004 with Windows XP Service Pack 2,[3] while Apple introduced DEP in 2006.[1] (When they moved to x86)
Какие еще патчи, если в ядрах прям функция есть?
К тому же на венде она по умолчанию включена в режим защиты определенного круга системных приложений (а не выключена)
Записан
BRE
Гость
« Ответ #23 : Февраль 29, 2012, 17:53 »

К тому же на венде она по умолчанию включена в режим защиты определенного круга системных приложений (а не выключена)
Это я не про венду говорил, а про linux.
Записан
mutineer
Гость
« Ответ #24 : Февраль 29, 2012, 18:03 »

К тому же на венде она по умолчанию включена в режим защиты определенного круга системных приложений (а не выключена)
Это я не про венду говорил, а про linux.

Сори, не включил либастрал. Источником данных не поделишься? А то ниче нагуглить не могу

Нагуглил вот, что в MacOS X и RHEL 3 update 3 и позже включено по умолчанию
« Последнее редактирование: Февраль 29, 2012, 18:07 от mutineer » Записан
BRE
Гость
« Ответ #25 : Февраль 29, 2012, 18:11 »

Сори, не включил либастрал. Источником данных не поделишься? А то ниче нагуглить не могу
Поищи так: linux защита от переполнения стека

Нагуглил вот, что в MacOS X и RHEL 3 update 3 и позже включено по умолчанию
А на обычных ядрах обычных дистрибутивов?
Записан
mutineer
Гость
« Ответ #26 : Февраль 29, 2012, 18:15 »

Нагуглил вот, что в MacOS X и RHEL 3 update 3 и позже включено по умолчанию
А на обычных ядрах обычных дистрибутивов?

Чем у RHEL не обычное ядро? в "обычном" ядре эта функция присутствует с 2.6.8. В Ubuntu с 9.04 или 9.10 включено по умолчанию
Даже в ведроиде есть и работает

Только это не "защита от переполнения стека" называется
« Последнее редактирование: Февраль 29, 2012, 18:19 от mutineer » Записан
BRE
Гость
« Ответ #27 : Февраль 29, 2012, 18:18 »

Чем у RHEL не обычное ядро? в "обычном" ядре эта функция присутствует с 2.6.8. В Ubuntu с 9.04 или 9.10 включено по умолчанию
Потому, что пропатчено.

Только это не "защита от переполнения стека" называется
Ты так в гугле набери и с начала начни читать.
Записан
mutineer
Гость
« Ответ #28 : Февраль 29, 2012, 18:20 »

Чем у RHEL не обычное ядро? в "обычном" ядре эта функция присутствует с 2.6.8. В Ubuntu с 9.04 или 9.10 включено по умолчанию
Потому, что пропатчено.

Ок, если тебе так удобнее, то пусть будет пропатчено. Пропатчено, правда, аж в 2004 году и с тех пор этот патч есть в основном ядре, ну да ладно...

https://www.google.com/search?client=opera&rls=ru&q=Data+Execution+Prevention+linux&sourceid=opera&ie=utf-8&oe=utf-8#q=Data+Execution+Prevention+linux&hl=ru&client=opera&hs=Dr6&rls=ru&prmd=imvns&ei=cj5OT4nHGIzP4QTYvbTaAg&start=10&sa=N&fp=1&biw=1075&bih=808&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&cad=b

http://en.wikipedia.org/wiki/NX_bit
Записан
BRE
Гость
« Ответ #29 : Февраль 29, 2012, 18:38 »

Ок, если тебе так удобнее, то пусть будет пропатчено. Пропатчено, правда, аж в 2004 году и с тех пор этот патч есть в основном ядре, ну да ладно...
Еще что интересного нагуглил?

Вот смотри интересные статьи:
http://www.securitylab.ru/analytics/406154.php
http://www.insidepro.com/kk/063/063r.shtml
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.137 секунд. Запросов: 23.