Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

ФермаКактусов Высший разум (200734), закрыт 1 месяц назад
Лучший ответ
Николай Матвейчук Просветленный (45022) 2 месяца назад
В защищённом режиме процессора (по сути стандартный многозадачный режим, в котором сейчас любая современная операционка работает) нельзя. Дело в том, что там процессору скармливаются таблицы дескрипторов, указывающих что и где в оперативной памяти находится, и у них есть строго разделение на дескрипторы кода и дескрипторы данных. Можно в целом схитрить и создать два дескриптора на один и тот же участок памяти, что позволит по одному из них код выполнять, а по другому менять его, как будто это данные, но это брешь в безопасности и операционки такое запрещают делать... ну точнее они вообще не дают доступа к таблицам дескрипторов, а реализуют загрузку программ в память и выделение памяти под данные для этих программ через специальные АПИ. Потому гипотетически программа может менять свой код, но на практике всё сделано для того, чтобы это запретить делать.
ФермаКактусовВысший разум (200734) 2 месяца назад
если случайно изменить api в операционке то можно делать вакханалию?)
Николай Матвейчук Просветленный (45022) ФермаКактусов, всмысле "случайно изменить api"? Если Вы свою операционку пишите, то да, если что-то неправильно написать и позволить делать то самое задвоение дескрипторов, о котором я говорил выше, то можно наделать что угодно. Но если речь про какой-нить windows, линукс или типа того, то там никакого случайного изменения апи быть не может. АПИ, это не то, что пишет разработчик программы, а то, что пишет поставщик этого АПИ (по сути разработчик операционки в данном случае)... потому любое изменение в этих АПИ со стороны разработчика программы может быть только намеренным, и если это операционная система с закрытым кодом, то ещё и с очень большими подвыподвертами, типа дизассемблирования кода и прочего :)
Остальные ответы
Варчун Оракул (86467) 2 месяца назад
Если прописать ей такой функционал - да.
А Б Б А Оракул (92732) 2 месяца назад
Может. Вирус называется
Данил Ласый Просветленный (24158) 2 месяца назад
Каждая программа мечтает самовзломаться
Андрей Высший разум (447373) 2 месяца назад
Эта идея была популярна лет 40 назад: https://ru.wikipedia.org/wiki/Самомодифицирующийся_код . Но с появлением полиморфных вирусов стало понятно, что овчинка не стоит выделки. И в современных операционных системах возможность модификации программой своего собственного кода постарались максимально заблокировать.
Похожие вопросы