объектами ole приложения могут быть

Понятие OLE объекта. Технология OLE-Automation

Появившаяся еще в ранних версиях Windows технология согласно которой приложения пакета MS Office могут взаимодействовать между собой и со многими другими прикладными программами путем выполнения операций импорта-экспорта данных, при которых данные одного файла-документа по определенным соглашениям пересылаются в другой файл-документ и при этом оба файла могут иметь одинаковый тип, но разный формат или могут принадлежать к разным классам документов произвела настоящий фурор в кругах пользователей. Тем более, что сама идея (обмен данными между приложениями и предоставление служб одного программного продукта другому) в те времена была просто революционной. Теперь какой-либо объект (например, файл мультимедиа), подготовленный сторонним приложением, может быть использован другим программным продуктом или даже внедрен в состав его документа.

Обмен данными между документами различных приложений в большинстве случаев осуществляется на основе технологии связывания и внедрения объектов (технологии OLE — Object Linking and Embedding).

Понятие OLE

Для связывания документов разных приложений используется технология OLE (Object Linking and Embedding), что означает «связывание и встраивание объектов», разработанная корпорацией Майкрософт.

Наличие такого механизма позволяет перенести в выходной документ фрагмент или файл некоторого приложения. Выходной связанный документ приобретает при этом свойства составного документа, т. е. документа, имеющего встроенные или связанные объекты различных форматов, созданные другими приложениями. Эта технология обеспечивает совместную работу нескольких приложений при создании составного документа, позволяет перемещать и копировать объекты между приложениями, а также хранить объекты в отдельных файлах, связанных с документом, где этот объект используется.

Например, при подготовке текста в текстовом процессоре часто возникает необходимость размещения иллюстраций. Для этой цели графический файл рисунка может быть использован как объект для связывания или встраивания в текстовый документ.

Документ, содержащий OLE-объекты, называют составным документом (compound document).

Приложение, отвечающее за составной документ, принято называть контейнером (OLE container). Оно имеет сложную структуру, так как умеет работать с “чужими” объектами. Приложение, создавшее объект, называется сервером (OLE server).

Обязательным условием для создания составного документа является поддержка технологии OLE и исходным приложением, и целевым приложением. При этом исходные приложения, их называют OLE-серверы, это приложения, которые позволяют только создавать объекты для использования другими приложениями. Последние называют OLE-клиентами или контейнерами, они имеют сложную структуру, так как позволяют внедрять и связывать «чужие» объекты в своих документах. Так графический редактор Paint является OLE-сервером, а текстовый редактор WordPad контейнером (OLE-клиентом). Поэтому составные документы создаются с его помощью и сохраняются в файлах WordPad (имеющих расширение DOC).

Как следует из названия технологии, объект OLE может быть связан (linked) или внедрен (embedded) в составной документ.

Контейнеры и серверы могут поддерживать два режима взаимодействия:

· связывание объектов. В составном документе хранится только ссылка на объект, данные которого находятся в другом документе.

С помощью технологии связывания и внедрения объектов (OLE), реализованной в Microsoft Windows, можно копировать и размещать информацию из одного приложения в другое, сохраняя возможность редактирования ее в исходном приложении.

И при связывании, и при внедрении производится вставка информации из одного документа в другой. Далее, в обоих случаях редактирование объекта производится в документе приложения-приемника.

Одно из основных различий между объектами OLE, ассоциированными с 16- разрядными серверами OLE 1 и с 32- разрядными серверами OLE 2, заключается в способе их активизации. Когда активизируется объект, созданный для сервера OLE 1, запускается и получает фокус ввода приложение-сервер, а объект OLE появляется в нем в готовом для редактирования виде. Когда активизируется объект OLE 2, приложение-сервер OLE 2 становится активным неявно, «внутри» приложения-контейнера. Это называется активизацией по месту вставки (in-place activation), или визуальным редактированием (visual editing).

При активизации объекта OLE 2 меню и панели инструментов приложения- сервера заменяются или сливаются с соответствующими элементами приложения- клиента, а часть окна приложения-клиента, по сути, становится окном приложения- сервера.

Под внедрением объекта подразумевается сохранение в файле составного документа не только всей информации об объекте, но и о приложении, в котором он был создан. Это позволяет в дальнейшем редактировать объект с помощью этого приложения. Для перехода в режим редактирования на объекте в составном документе выполняют двойной щелчок. Это действие открывает создавшее объект приложение, причем возможны два варианта работы с ним, в зависимости от организации взаимодействия приложений:

приложение-сервер открывается в отдельном окне, и после редактирования объекта в меню Файл этого окна выбирают команду Выход и возврат для возврата к составному документу в приложении-клиенте;

· в окне приложения-клиента меню команд и панели инструментов заменяются меню и панелями приложения-сервера, и после редактирования объекта следует щелкнуть в любом другом месте документа для активизации приложения-клиента.

Эта технология позволяет внедрять в составной документ объекты самого различного типа, например, звуковые или видео. Конечно, они не могут быть воспроизведены средствами WordPad, поэтому в документе отображаются значком, двойной щелчок по которому активизирует просмотр объекта с помощью создавшего его приложения. Следует иметь в виду, что размеры файлов составных документов в этом случае оказываются очень большими, так как каждый из них содержит отдельную копию объекта. Редактирование одной из копий не окажет никакого воздействия на остальные, поэтому составные документы могут содержать разные варианты одного и того же исходного объекта.

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

Связывание объектов позволяет редактировать объект независимо от составного документа. При загрузке составного документа со связями приложение-клиент запрашивает пользователя о необходимости их обновления. Если пользователь отвечает на запрос, то объект в составном документе загружается из файла заново, в противном случае составной документ отображает предыдущее состояние объекта. Отсюда становится ясно, что если в составном документе хранится только адрес файла объекта, то его загрузка каждый раз выполняется заново, а в случае отсутствия файла по адресу, хранящемуся в формуле связи, отображение объекта будет невозможно. В такой ситуации программа-клиент предлагает пользователю самому указать новое место нахождения файла. Это действие называется восстановлением связи.

Поскольку методы вставки внедренных и связных объектов имеют много общего, бывает трудно определить, является ли объект связанным или внедренным. В данной таблице приводится ряд различий этих объектов.

Связный объектВнедренный объект
При двойном щелчке для редактирования объекта всегда открывается отдельное окно программы.При двойном щелчке на объектах меню Word заменяется на меню этих программ.
Данные объекта копируются в окно исходной программы для редактирования.Редактирование данных выполняется непосредственно в документе Word.

объектами ole приложения могут быть. image021. объектами ole приложения могут быть фото. объектами ole приложения могут быть-image021. картинка объектами ole приложения могут быть. картинка image021.

Источник

Связывание и внедрение объектов (ole)

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

Благодаря огромным возможностям Windows, таким как многозадачность, буфер обмена, OLE (object linking and embedding), приложения стали интегрированными. OLE – одна из важнейших технологий обмена данными между приложениями Microsoft в настоящее время.

Для перемещения текста и графики из одного приложения в другое через буфер обмена применяются простые операции вырезания, копирования и вставки. Однако эти способы имеют три основных недостатка:

Во-первых, если данные в исходном документе меняются, то документ, содержащий копию, становится устаревшим.

Во-вторых, затруднено внесение изменений в скопированные данные.

В-третьих, копирование данных между документами часто приводит к нерациональному использованию дискового пространства.

Было бы хорошо, если бы не приходилось беспокоиться об обновлении общих данных и иметь систему, которая выполняет три задачи:

1) если данные изменяются в исходном приложении, обновляет скопированные данные автоматически;

2) если требуется редактировать скопированные данные, система облегчает поиск исходного приложения и файла данных;

3) позволяет хранить данные другого приложения в документе, не требуя содержания отдельных документов для исходных данных.

Всем этим требованиям отвечает технология OLE. В свое время Microsoft надеялась, что будущее за технологией DDE (dynamic data exchange). Работа DDE заключается в установке между двумя приложениями коммуникационного канала, по которому происходит передача данных. К сожалению, эта технология потерпела поражение. Она оказалась непроизводительной, ей не хватало цельности и гибкости.

Технология OLE облегчила для пользователей обмен данными между приложениями, обеспечила автоматическое обновление общих данных и смешивание нескольких типов данных в одном документе без использования лишнего дискового пространства.

Основные понятия OLE: объект, приложение сервера и приложение контейнера.

Объектами являются не только данные (фрагменты текста, графики, звук, электронная таблица и т. д.), но и одна или несколько функций создания, доступа и использования этих данных.

Приложение сервера – это приложение, используемое для создания и редактирования объекта. Оно называется еще исходным приложением. Приложение контейнера – это приложение, используемое для хранения связанного или внедренного объекта, созданного с помощью приложения сервера. Оно называется еще приложением клиента.

Архитектура OLE состоит из составного документа, связывания объекта и внедрения объекта.

Составным документом называется документ, который содержит, помимо базовых данных, один или несколько объектов, созданных с помощью других приложений. Базовые данные документа и его объекты могут иметь совершенно разные форматы данных. Например, документ текстового редактора может включать объект диапазона электронной таблицы или звуковой клип. Приложение контейнера не обязательно должно распознавать такие форматы данных. Ему достаточно знать имя приложения сервера, создавшего объект, и способ отображения данных. Вся эта информация предоставляется как часть объекта, поэтому она всегда доступна приложению контейнера.

Составной документ создается путем связывания объектов с документами или внедрения их в документ, что следует из самой технологии OLE. Связь и внедрение объектов (OLE) – способ передачи и обмена информацией между приложениями.

Связывание – это один из способов OLE, применяемых для вставки объекта в файл приложения контейнера и создания, таким образом, составного документа.

Связывание имеет много преимуществ, но наиболее существенны из них три:

Во-первых, связь позволяет приложению контейнера проверять исходный документ на изменения. Если обнаруживается, что данные изменены, OLE воспользуется связью для автоматического обновления объекта.

Во-вторых, поскольку объект знает, где найти приложение сервера и исходный документ, его можно редактировать непосредственно в приложении сервера. В большинстве случаев при выполнении двойного щелчка на объекте осуществляется вызов сервера и загрузка исходного файла. Затем можно отредактировать исходные данные и закрыть приложение сервера, а объект будет автоматически обновлен.

В-третьих, поскольку исходные данные хранятся в отдельном файле, их можно повторно использовать в других составных документах и изменять непосредственно в приложении сервера.

Связанный объект – представление объекта, вставленного в документ; при этом собственно объект существует в отдельном файле, и при его изменении связанный объект отображает эти изменения.

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

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

Фактически внедрение позволяет создавать объект сервера прямо из приложения контейнера. Например, если вы работаете с Word для Windows, можно вставлять в документ новый объект электронной таблицы непосредственно из Word. OLE запустит программу Excel, что позволяет создать новый объект, но после выхода из Excel объект будет существовать только в составном документе Word. Отдельный файл Excel создаваться не будет.

Следует заметить, что некоторые приложения могут исполнять роль только OLE-серверов. Это значит, что они не являются самостоятельными приложениями, а следовательно, не могут создавать собственные файлы. Эти программы существуют только для создания OLE-объектов для составных документов. Примерами являются приложения WordArt и Microsoft Graph.

Рассмотрим применение OLE для создания составных документов (соответствующие иллюстрации см. в Приложениях 1-4 Файла материалов):

СВЯЗЫВАНИЕ ЧЕРЕЗ БУФЕР ОБМЕНА. Если исходным приложением является OLE-сервер, при операции вырезания или копирования в буфер обмена передаются не только выделенные данные, но и различные фрагменты данных, называемые форматами буфера обмена. Приложение контейнера использует эти форматы для выполнения связывания.

После помещения данных в буфер обмена надо переключиться на приложение контейнера и поместить курсор в место вставки данных. Затем следует выбрать команду “Правка — Специальная вставка”, чтобы открыть диалоговое окно “Специальная вставка” (см. рис. 2.1).

В списке “Как” перечислены возможные форматы данных, их можно игнорировать. Для создания связи между контейнером и сервером надо использовать опцию “Вставить связь”. Чтобы данные в документе-контейнере отображались в виде пиктограммы, надо установить флажок “В виде значка”. После этого необходимо щелкнуть на кнопке “ОК”, чтобы вставить связанный объект в контейнер.

ВСТАВКА ФАЙЛА В КАЧЕСТВЕ СВЯЗАННОГО ОБЪЕКТА. В качестве связанного объекта можно выбрать целый файл. Например, при вставке связанной таблицы Excel в документ Word объект контейнера будет реагировать на все изменения исходной рабочей таблицы, включая добавление и удаление данных, форматирования и т.д.

Для вставки целого файла в качестве связанного объекта надо установить курсор в приложении контейнера там, где требуется выполнить вставку. В зависимости от приложения выбрать команду “Вставка – Объект” или “Правка – Вставить объект”, чтобы открыть диалоговое окно “Вставка объекта”. В диалоговом окне выбрать опцию “Создать из файла” (см. рис. 2.2).

В появившемся диалоговом окне ввести имя файла или щелкнуть на кнопке “Обзор”, чтобы выбрать файл. Установить флажок “Связать с файлом” и щелкнуть на кнопке “ОК”. Объект будет вставлен.

ВНЕДРЕНИЕ ЧЕРЕЗ БУФЕР ОБМЕНА. Если исходным приложением служит OLE-сервер, вырезанный или скопированный в буфер обмена объект содержит форматы связи и все форматы, позволяющие приложению контейнера внедрять данные.

Для вставки данных, помещенных в буфер, надо переключиться на приложение контейнера, установить курсор в место вставки и выбрать команду “Правка – Специальная вставка”, чтобы открыть диалоговое окно “Специальная вставка” (см. рис.2.3).

В списке “Как” надо выбрать формат объекта и обязательно установить опцию “Вставить”. Если требуется отобразить данные в документе-контейнере в виде пиктограммы, надо установить флажок “В виде значка”. После этого надо щелкнуть на кнопке “ОК”, и внедренный объект будет вставлен в контейнер.

ВСТАВКА НОВОГО ВНЕДРЕННОГО ОБЪЕКТА. Если объекта, который требуется внедрить, не существует, а создавать отдельный файл не требуется, OLE позволяет вставлять новый объект в окно приложения контейнера. В приложении контейнера необходимо указать курсором место вставки и выбрать команду “Вставка – Объект” или “Правка – Вставить объект”. В диалоговом окне “Вставка объекта” в списке “Тип объекта” надо выделить тип объекта, который требуется создать и щелкнуть кнопку “ОК” (см. рис.2.5).

В возникшем окне приложения сервера для выбранного типа объекта необходимо создать предназначенный для внедрения объект и для выхода из приложения сервера щелкнуть вне объекта.

ВСТАВКА ВНЕДРЕННОГО ФАЙЛА. В качестве внедренного объекта можно вставить целый файл (а не объект из файла). Это удобно, если требуется ввести изменения в файл в окне контейнера, не затрагивая оригинал.

Для этого в окне документа-контейнера надо установить курсор в место вставки объекта. В зависимости от приложения выбрать команду “Вставка – Объект” или “Правка – Вставка объект” для того, чтобы открыть диалоговое окно. В диалоговом окне, в зависимости от приложения, выбрать опцию “Создание из файла” или установить переключатель “Создание из файла”. В появившемся диалоговом окне ввести имя файла или, щелкнув на кнопке “Обзор”, выбрать “Имя файла” (см.рис.2.6).

Затем надо щелкнуть на кнопке “ОК”, чтобы выполнить вставку внедренного файла.

Рассмотренная технология получила широкое применение с появлением Windows 95, так как здесь OLE встроена в операционную систему. Дальнейшее развитие этот подход получил в Windows 98. Все приложения Windows 95 и Windows 98, обрабатывающие документы, гарантированно отвечают стандартам OLE, поэтому результат работы с ними всегда предсказуем.

Статьи к прочтению:

Сексуальные игры со связыванием, или когда хочется грубее

Похожие статьи:

Созданные другими Windows-приложениями объекты могут быть внедрены в документ WordPad или связаны с ним. Для этого выберите пункт меню…

Лабораторная работа №2 Работа с графическими объектами в ms Word Цель работы: изучить возможности работы с графическими объектами в MS Word: вставка в…

Источник

OLE, COM, COM+

объектами ole приложения могут быть. image loader. объектами ole приложения могут быть фото. объектами ole приложения могут быть-image loader. картинка объектами ole приложения могут быть. картинка image loader.

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

С чего всё началось

Появление парадигмы объектно-ориентированного программирования подарило программистам очень мощные инструменты для обработки информации. Начали появляться новые языки, которые использовались для разных спектров задач, программное обеспечение становилось модульным. Написание новой программы с функционалом, который использовал стандартные механизмы ввода/вывода стало тривиальной задачей. Нужно было только подключить нужную библиотеку, которая уже содержала все необходимые функции.

Результатом использования парадигмы объектно-ориентированного подхода стали методы логического разбиения приложений на отдельные фрагменты, при этом можно было создавать уже скомпилированные части кода, которые собирались в новые приложения. Модульность позволила задуматься о механизмах, которые могли бы позволить объединять код, фрагменты которого были бы написаны на разных языках программирования, в одну систему, которая решала бы отдельно взятую проблему или целый класс проблем.

В операционной системе Windows подход к созданию отдельных компонентов был реализован в предоставлении унифицированных интерфейсов, которыми приложения пользуются и по сей день. Эти интерфейсы называются WinAPI. Их исследование достаточно тривиально, большая часть интерфейсов задокументирована и поэтому их обратная разработка заключается в том, чтобы найти в документации название и прочитать данные о параметрах и возвращаемом значении.

Каждый WinAPI интерфейс позволяет сделать минимальное действие, которое может произвести ОС, то есть если программист решит написать приложение, то для его реализации придётся задействовать несколько сотен, а то и тысяч интерфейсов. Отдельно стоит упомянуть, что это далеко не единственный способ, который доступен в ОС для реализации алгоритмов. ОС Windows также предлагает компонентный подход для построения приложений. Это означает, что программист может объединять целые программы вместе, чтобы реализовать выполнение алгоритма. Возможно это за счет использования механизма Component Object Module.

Появление COM не случайно, реализация этого механизма — логичный этап развития. На схеме ниже можно увидеть ретроспективу создания механизмов в ОС Windows:

объектами ole приложения могут быть. 9293e26b86686b288ca0c450175f6c4f. объектами ole приложения могут быть фото. объектами ole приложения могут быть-9293e26b86686b288ca0c450175f6c4f. картинка объектами ole приложения могут быть. картинка 9293e26b86686b288ca0c450175f6c4f.

Картинка наглядно показывает, как связано появление того или иного механизма. Реализация каждого нового механизма это решение проблем, которые возникли при реализации предыдущего механизма. Картинка включает в себя такие механизмы как OLE, COM+, DCOM, которые тоже, надо сказать очень сложные с точки зрения реализации и изучения.

Некоторые полезные определения

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

COM дает возможность переиспользовать куски приложения. Работает за счет того, что можно собрать исполняемый кусок кода и расположить его в реестре ОС. Кусок кода получит уникальный идентификатор и будет вызывать ОС каждый раз, как приложения будут запрашивать обработку данных по идентификатору. Для создания кода можно использовать любой компилируемый язык программирования.

Примеры и практика

Давайте попробуем посмотреть, как обозначенные выше механизмы выглядят в ПО при обратной разработке. Начнем с OLE. Как было сказано выше, этот механизм проще всего обнаружить в офисных документах. Попробуем найти такой документ.

Для исследования был выбран вот этот документ. Он представляет собой docx файл, по сути это архив, который содержит некоторое количество файлов с инструкциями, как его рендерить. Заглянем внутрь: в этом формате все данные, которые могут быть добавлены через OLE это файлы, которые расположены в директории «word/embeddings». Заголовок содержимого объекта можно видеть ниже:

объектами ole приложения могут быть. image loader. объектами ole приложения могут быть фото. объектами ole приложения могут быть-image loader. картинка объектами ole приложения могут быть. картинка image loader.

Ничего особенно примечательного, такие объекты можно анализировать с использованием набор инструментов oletools.

OLE объект представляет собой файловую систему, в которую можно положить информацию необходимую для встраивания данных. Если воспользоваться инструментом oleobj, то можно увидеть, что внутри объекта находится txt файл. Кстати, это можно увидеть и из шестнадцатеричного редактора:

объектами ole приложения могут быть. image loader. объектами ole приложения могут быть фото. объектами ole приложения могут быть-image loader. картинка объектами ole приложения могут быть. картинка image loader.

объектами ole приложения могут быть. image loader. объектами ole приложения могут быть фото. объектами ole приложения могут быть-image loader. картинка объектами ole приложения могут быть. картинка image loader.

Почти все элементы пользовательского интерфейса, которыми мы пользуемся каждый день, это COM объекты.

Как найти объекты COM+? Если в COMView вы обнаружили объект, который имеет интерфейс IUnknown, перед вами COM+ объект. Например:

объектами ole приложения могут быть. image loader. объектами ole приложения могут быть фото. объектами ole приложения могут быть-image loader. картинка объектами ole приложения могут быть. картинка image loader.

Таким образом можно установить, за какой функционал отвечает тот или иной объект, который используется программным обеспечением. При этом не нужно вникать в имплементацию и можно сразу разобраться в алгоритме приложения, прочитав описание объекта в интерфейсе COMView.

Статья подготовлена Александром Колесниковым в рамках курса «Reverse-Engineering. Professional». Если интересно узнать больше о программе и формате обучения на этом курсе, приходите на день открытых дверей онлайн, на котором вы также сможете познакомиться с преподавателем.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *