Главная > Разное > О пользе и вреде исполняемого кода

О пользе и вреде исполняемого кода

Общая тенденция развития software — это ориентация на всё менее и менее квалифицированного пользователя(количество ума на Земле-величина постоянная, а население растёт). Программа должна быть большой, интегрированной куда только можно, легко расширяемой.

Пишем грамотный программный код

Но перейдём от лирики к сути. А именно к интерфейсам и способам управления. Очевидно, что наиболее гибким вариантом является введение в программу некоего языка программирования. То есть программа должна содержать в себе некую виртуальную вычислительную машину со своей системой команд. Средства этого языка должны включать в себя механизмы обращения ко всем функциям конкретного программного пакета, алгоритмические конструкции (ветвление, переходы) и возможность интеграции с другой виртуальной машиной.



Все программы, обычно называемые макросами или скриптами, выполняются некой специальной виртуальной машиной, представляющей собой, чаще всего, интерпретатор (нередко с элементами компиляции). Скорость работы макросов на своих виртуальных машинах существенно уступает скорости похожих приложений, использующих непосредственно микропроцессор. Логично, что программисты стремятся ускорить макросы всеми способами.

Простейшим способом ускорения виртуальной машины является уменьшение уровней виртуальности. Например, байт-код Java исполняется на виртуальной машине Java, которая работает на процессоре, активно используя вызовы операционной системы. С помощью этого популярного языка программирования можно сделать что угодно, например, измерить скорость интернета, узнать IP-адрес и проверить стабильность сетевого подключения. Делаем предварительную компиляцию Java-кода в код процессора, убираем один уровень виртуальности и получаем существенное ускорение. Так работают JIT (Just in time) машины.

Другой аспект Java — это использование оконной функции. Поскольку Windows содержит богатые функции работы с окнами, то очевидным путём оптимизации Java-машины является прямой вызов аналогичных функций ОС. В случае отсутствия прямого аналога — вызов минимально необходимой последовательности ОС. Хотя если забыть о том, что сама идеология Java заключается в полной независимости от виртуальных машин. Таким образом, подобные оптимизации не в полной мере соответствуют концепции переносимого Java. Это не так и фатально, но ликвидация барьеров между виртуальными машинами может пробить брешь в системе безопасности, благодаря которой на компьютере могут поселиться неожиданные подарки.

Другой логичной целью является создание универсального языка VBA. Да это хорошо. Универсализм языка заключается в уменьшении уровней виртуальности а значит и в увеличении скорости. Хорошо интегрируется. Всё это хорошо для пользователя. Так как пользователь получает очень хорошую производительность и большие возможности. А с другой стороны подобная интеграция это серьёзный удар по безопасности системы в целом. Из VB макросов можно свободно вызвать любую функцию win32 API.

Приведу пример (НЕ ПЫТАЙТЕСЬ ВОСПРОИЗВЕСТИ!):

Declsre Function ExitWindowsEx Lib
< >(uFunction As Integer,
dwReserved As Integer) As *********
Sub MAIN
ExitWindows *,*
End Sub

(*-заменены значения и параметры во избежания воспроизведения)

Приведённый пример — это простейший макрос который перегружает ОС в максимально жёстком режиме без каких либо вопросов о сохранении информации. Таким образом можно создать документ самого популярного формата, при открытии которого будет безоговорочно рестартовать ОС. Вот вам и интеграция.

Открываемые в Web-браузере странички могут содержать выполняемый код, который, используя интеграцию виртуальной машины браузера с ОС (имеется в виду СОМ) может вызывать функции API, который способен работать с локальными файлами. Вот и подумайте про безопасность.

Например макровирус для VBA который саморассылается посредством почтовых программ, а также, html и Java и через ошибки браузера для пересылки себя к посетителям сервера.

Если вспомнить о технологиях internet, например игры которые часто используют Java скрипт или ActiveX и используют как виртуальные машины так и специальный браузер, который будет работать на машине с правами текущего пользователя. Или программы использующие голосового общения в интернете…

Всё это потенциальные дырки безопасности, опасные тем больше, чем больше они соответствуют модному стилю интегрированности и оптимизации.

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

Спасибо за статью:

© CRUSHER — начальник отдела контрвзлома REAKKTOR Media,

© CoDi — Ведущий программист REAKKTOR Media,

© Eva «Angel» — зам начальника по модерации,

© TIMBER VOLF — консультант по административной части REAKKTOR Media

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

Читайте также:

Прокомментируете вышенаписанное?

* обозначены обязательные для заполнения поля