Ole объекты что это
Объект связывания и встраивания объектов (OLE) является внешним файлом (например, документом, графическим или видеофайлом), созданным с помощью внешнего приложения, который может быть вставлен в другое приложение, такое как Creo Parametric .
Можно создавать и вставлять поддерживаемые объекты OLE в двумерные файлы Creo Parametric , такие как чертеж, отчет, файл формата, компоновка или диаграмма.
В Creo Parametric можно вставлять объекты OLE в режиме связывания или встраивания. После вставки объекта его можно править в Creo Parametric или в отдельном окне приложения за пределами Creo Parametric .
В Creo Parametric объекты OLE можно вставлять в 2D-файлы следующих типов:
• файлы формата;
Отображение объекта OLE
Возможности создавать и править объекты OLE относятся только к Windows.
Число и тип поддерживаемых объектов OLE могут меняться в зависимости от приложений, установленных на компьютере.
Связывание объектов
Связанный объект — это файл, который был создан внешней программой и связан ссылкой с Creo Parametric . Например, связанный с файлом рисунок отображается в чертеже. Любые изменения внешнего файла отразятся в чертеже, а все изменения, внесенные в объект в Creo Parametric, сохранятся в исходном объекте.
Встраивание объектов
Встроенный объект целиком сохраняется в файле чертежа Creo Parametric и не содержит ссылок на внешний файл. При вставке объекта как встроенного файл копируется и помещается в документ. Объект можно по-прежнему активировать из Creo Parametric с помощью создавшей его программы. Любые изменения, внесенные во внешний файл, не отразятся на встроенной копии. Можно также создать в виде встроенного новый объект, не имеющий ссылки на внешний файл. В Creo Parametric новые объекты всегда создаются как встроенные.
Опции вычерчивания объектов OLE
Вычерчивать объекты OLE можно в режиме «Чертеж» (Drawing). Следующие драйверы поддерживают печать объектов OLE.
Ole объекты что это
Из статьи Вы узнаете основные сведения об OLE, некоторые вещи относительно OLE 2 и OLE Automation. В статье рассказывается об использовании объекта TOLEContainer для построения OLE приложения в Delphi.
Основы OLE
Прежде, чем перейти к рассмотрению основ OLE, потребуется изучить терминологию.
Аббревиатура OLE обозначает Objects Linked and Embedded (Присоединенные И Встроенные Объекты — ПИВО J). Данные, разделяемые между приложениями называются OLE объектом. Приложение, которое может содержать OLE объекты, называют OLE контейнером (OLE Container). Приложение, данные из которого можно включить в OLE контейнер в виде OLE объекта, называют OLE сервером.
Например, MicroSoft Word может включать в документ графические объекты, аудио- и видеоклипы и множество других объектов (такой документ иногда называют составным документом — compound document).
Как следует из названия, OLE объекты можно либо присоединить к OLE контейнеру, либо включить в него. В первом случае данные будут храниться в файле на диске, любое приложение будет иметь доступ к этим данным и сможет вносить изменения. Во втором случае данные включаются в OLE контейнер и только он сможет просматривать и модифицировать эти данные.
OLE является дальнейшим развитием идеи разделяемых между приложениями данных. Если с помощью DDE можно было работать с текстом, то OLE позволяет легко встроить в приложение обработку любых типов данных. Как и в случае с DDE, для правильной работы приложения-клиента (OLE контейнера) требуется наличие приложения OLE сервера. Каждый раз, когда в программе-клиенте пользователь обращается к OLE объекту с целью просмотра или редактирования данных (обычно двойной щелчок мышкой на объекте), запускается приложение-сервер, в котором и происходит работа с данными.
В природе существует несколько видов OLE, отличающихся по способу активации OLE сервера. OLE версии 1 запускает сервер в отдельном окне. OLE 2 реализует то, что называется in-place activation and editing. В данном случае сервер запускается «внутри» приложения-клиента, модифицирует вид системного меню, линейки инструментов и др. Развитие идеи OLE привело к появлению OLE automation — приложение-клиент может выполнить часть кода сервера. Тип OLE объекта, помещенного в программу-клиент, определяется тем, какую версию OLE поддерживает сервер.
Объект TOLEContainer
Объект TOLEContainer находится на странице System Палитры Компонент и нужен для создания приложений OLE-контейнеров. TOLEContainer скрывает все сложности, связанные с внутренней организацией OLE и предоставляет программисту достаточно простой интерфейс. Построим простейшее приложение с использованием OLE объекта. Создайте новый проект и поместите на форму TOLEContainer, в Инспекторе Объектов дважды щелкните мышкой на свойство ObjClass или ObjDoc — появится стандартный диалог Windows «Insert Object» (см. рис.1)
Рис.1: Стандартный диалог Windows для определения OLE объекта.
В этом диалоге есть список всех зарегистрированных в системе OLE-серверов (регистрация происходит при инсталляции программы). Тип OLE-объекта определяется как раз тем сервером, который Вы укажете. Если Вы создаете новый объект (Create New), то при нажатии кнопки OK запустится программа OLE-сервер, в которой и формируется новый объект. После выхода из программы-сервера новый OLE объект включается (embedded object) в программу. OLE объект можно создать используя уже имеющийся файл в формате одного из OLE-серверов. Для этого нужно выбрать пункт Create from File (см. рис.2)
Рис.2: Выбор OLE-объекта, хранящегося в файле.
Выбранный объект можно как включить в приложение, так и присоединить, отметив пункт Link.
Итак, давайте при создании нашего проекта создадим новый объект, выбрав для этого, например, Microsoft Word Document (рис.1). Нажмите OK и после того, как запустится MS Word, наберите там любой текст («Это OLE-объект Microsoft Word document»). Для завершения работы в меню есть специальный пункт «File|Close and Return to Form1» (Win’95+MS Word 7.0). Запустите проект, он будет выглядеть примерно так:
Рис.3: Простое приложение с OLE-контейнером.
Щелкните дважды мышкой на OLE-контейнер — запустится MS Word с документом из OLE-объекта, который можно редактировать, при этом все изменения сохраняются в OLE-объекте.
. Если во время дизайна Вы выбираете объект для включения в OLE-контейнер, то он полностью записывается в файл формы (FORM1.DFM) и в дальнейшем прикомпилируется к EXE файлу. В случае очень больших объектов это может привести во время дизайна к длительным паузам и даже к возникновению ошибки «Out of resource». Поэтому рекомендуется большие объекты делать присоединенными (linked).
TOLEContainer позволяет отображать в программе объект в его непосредственном виде (с различной степенью увеличения или уменьшения — свойство Zoom) или в виде пиктограммы, определяемой в диалоге на рис.1 (Display as Icon).
Выбор OLE-объекта может происходить не только во время дизайна, но и во время выполнения программы (об этом чуть ниже). Результаты работы с этим объектом можно сохранить в виде файла и в следующий раз восстановить его оттуда, для этого TOLEContainer имеет два метода SaveToFile и LoadFromFile.
Пример OLE приложения
- создавать новый OLE контейнер во время выполнения программы;
- инициализировать OLE объект либо в стандартном диалоге Windows «Insert Object», либо с помощью Clipboard, либо с помощью техники «перенести и бросить» (drag-and-drop);
- сохранить OLE объект в файле и восстановить его оттуда;
Рис.4: MDI OLE приложение.
На рис.4 показан пример MDI приложения, содержащий два дочерних окна с OLE объектами. Для создания нового OLE объекта нужно выбрать пункт меню File|New и далее Edit|Insert Object. Появится стандартный диалог Windows для инициализации OLE объекта (см. рис.1). Если приложение OLE-сервер имеет возможность сохранять информацию об OLE объекте в Clipboard, то проинициализировать объект можно с помощью пункта меню Edit|Paste Special.
Достаточно интересной является возможность применения техники drag-and-drop в применении к OLE объектам. Запустите MS Word (разместите его окно так, чтобы было видно и OLE приложение), наберите какой-нибудь текст, выделите его и с помощью мышки перетащите и бросьте на главное MDI окно приложения. Появится новое дочернее окно с OLE контейнером, содержащим этот текст. Программирование данной возможности достаточно сложно. Полное описание технологии построения данного OLE приложения есть в документации в коробке с Delphi (User’s guide), этому посвящена отдельная глава.
Сохранение OLE объекта в базе данных
Иногда необходимо хранить OLE объекты не в файлах, а в базе данных (BLOB поле в таблице). Конечно, в данном случае OLE объект должен быть присоединенным (embedded) в целях переносимости. К сожалению, в стандартной поставке Delphi нет специального объекта типа TDBOLEContainer для данных целей, но OLE объект можно сохранять и восстанавливать с помощью методов SaveToStream и LoadFromStream. Например:
procedure TOLEForm.SaveOLE(Sender: TObject); var BlSt : TBlobStream; begin With Table1 do BlSt:=TBlobStream.Create(BlobField(FieldByName('OLE')), bmReadWrite); OLEContainer.SaveToStream(BlSt as TStream); BlSt.Free; end;
Ole объекты что это
Панель :
Меню : Рисование > OLE
Лента : вкладка Редактор > панель Рисование > OLE
OLE — это технология связывания и внедрения объектов, реализованная в Microsoft Windows, которая позволяет добавлять информацию из одного приложения в другое, сохраняя возможность ее редактирования в исходном приложении. Таким образом, в чертеж можно добавлять, например, редактируемые таблицы Microsoft Excel, диаграммы, текстовые страницы и др.
Добавленный посредством технологии OLE объект может быть копией исходного файла, либо являться лишь ссылкой на него. Вставка объектов может быть выполнена в виде графической информации (листа документа, графика и др) или в виде значка. Это позволяет добавлять в документ объекты любых форматов, но их просмотр и редактирование возможно только в сопоставленной с ними программе. По своей сути внедрение объектов и их связывание подобны вставке блоков и созданию внешних ссылок.
При внедрении объектов методом OLE выполняется вставка копии внедряемого документа. В этом случае вставленный объект не связан с исходным и в нем не отражаются изменения, производимые в исходном объекте. Просмотр и редактирование внедренных объектов выполняется в программе, в которой они были созданы, при этом не затрагивается исходный файл.
При вставке связных OLE-объектов образуется связь между документом сервера и выходным файлом. После вставки изображение OLE-объекта в составном документе является ссылкой на исходный файл. Поэтому, вносимые изменения при редактировании OLE-объекта влияют на содержимое исходного файла и наоборот, изменения в исходном файле отражаются при просмотре OLE-объекта из составного документа. Важно помнить, что при перемещении исходного файла, на который организована ссылка, просмотр OLE-объекта будет невозможен.
Для вставки связного и внедренного объекта в файл используется команда — OLE . После задания области расположения объекта возникает диалоговое окно «Вставка объекта». Данная команда позволяет выполнить вставку в чертеж не только существующего файла, но также предоставляет возможность добавления нового объекта выбранного типа.
Для вставки нового внедренного объекта выполните:
1. Нажмите кнопку в ленте меню или на панели инструментов;
2. При помощи левой кнопки мыши укажите прямоугольник, в который будет вписано изображение внедряемого файла;
3. В появившемся диалоговом окне «Вставка объекта» установите опцию Создать новый ;
4. Из списка Тип объекта выберите приложение при помощи которого необходимо создать объект;
5. Нажмите кнопку ОК ;
6. Запустится серверное приложение для внесения информационных данных в добавляемый объект;
7. Закройте серверное приложение и на запрос сохранения ответьте Нет . Если созданный файл необходимо сохранить отдельно на диск, на запрос сохранение ответьте Да и в стандартном диалоговом окне «Открыть» выберите каталог сохранения.
8. OLE-объект будет внедрен в чертеж, т.е. объект не будет связан с внешним файлом.
Для вставки существующего связного или внедренного объекта выполните:
1. Нажмите кнопку в ленте меню или на панели инструментов;
2. При помощи левой кнопки мыши укажите прямоугольник, в который будет вписано изображение внедряемого файла;
3. В появившемся диалоговом окне «Вставка объекта» установите опцию Создать из файла ;
4. Нажмите на кнопку [Обзор. ] и в открывшемся диалоговом окне «Обзор» укажите путь к добавляемому файлу;
5. Нажмите кнопку ОК ;
6. Для того, чтобы OLE-объект был связан с исходным файлом, установите галочку Связь , если опция отключена, добавляемый файл будет внедрен в чертеж;
7. Нажмите кнопку ОК ;
8. В чертеж будет вставлен OLE-объект.
OLE-объект в чертеж вставляется в виде растрового изображения и может отображать содержимое вставленного объекта, либо показан в виде значка. Для того, чтобы OLE-объект отображался в виде значка, в диалоговом окне «Вставка объекта» включите опцию В виде значка . Графическое изображение OLE-объекта вписывается в указанный прямоугольник по ширине.
OLE-объект после добавления в чертеж имеет один маркер в левом верхнем углу, показывающий точку вставки объекта. Открытие связного или внедренного объекта в серверном приложении для редактирования выполняется по двойному клику левой кнопкой мыши на объекте. Также из контекстного меню объекта доступна группа команд из пункта OLE . Изменения, производимые в внедренном объекте не требуют подтверждения сохранения, в то время как изменение связанного объекта требует подтверждение сохранения. Стоит помнить, что вносимые изменения в связный объект отражаются и в исходном.
OLE-объект обладает характерным набором свойств, которые можно просмотреть и переопределить в панели Свойства :
Цвет границ OLE-объекта.
Слой, на котором находится OLE-объект. Данное свойства содержит список всех доступных в чертеже слоев и позволяет переместить OLE-объект на другой слой.
Координаты точки вставки OLE-объекта. Точкой вставки считается верхний правый угол объекта.
Ширина и высота OLE-объекта. Изменение этих параметров выполняется без сохранения пропорций изображения.
Перейти на страницу Inventory
OLE, COM, COM+
Обратная разработка программного обеспечения — процедура получения информации об алгоритме. При этом получение этих данных напрямую зависит от того, насколько много есть информации о приложении в документации, и от того, какой использовался способ для создания файла. Всё еще больше усложняется, если алгоритм заимствует фрагменты из других приложений или операционной системы. Эта статья расскажет о механизмах, которые заложены в ОС Windows, благодаря которым процесс обратной разработки может стать весьма сложным процессом.
С чего всё началось
Появление парадигмы объектно-ориентированного программирования подарило программистам очень мощные инструменты для обработки информации. Начали появляться новые языки, которые использовались для разных спектров задач, программное обеспечение становилось модульным. Написание новой программы с функционалом, который использовал стандартные механизмы ввода/вывода стало тривиальной задачей. Нужно было только подключить нужную библиотеку, которая уже содержала все необходимые функции.
Результатом использования парадигмы объектно-ориентированного подхода стали методы логического разбиения приложений на отдельные фрагменты, при этом можно было создавать уже скомпилированные части кода, которые собирались в новые приложения. Модульность позволила задуматься о механизмах, которые могли бы позволить объединять код, фрагменты которого были бы написаны на разных языках программирования, в одну систему, которая решала бы отдельно взятую проблему или целый класс проблем.
В операционной системе Windows подход к созданию отдельных компонентов был реализован в предоставлении унифицированных интерфейсов, которыми приложения пользуются и по сей день. Эти интерфейсы называются WinAPI. Их исследование достаточно тривиально, большая часть интерфейсов задокументирована и поэтому их обратная разработка заключается в том, чтобы найти в документации название и прочитать данные о параметрах и возвращаемом значении.
Каждый WinAPI интерфейс позволяет сделать минимальное действие, которое может произвести ОС, то есть если программист решит написать приложение, то для его реализации придётся задействовать несколько сотен, а то и тысяч интерфейсов. Отдельно стоит упомянуть, что это далеко не единственный способ, который доступен в ОС для реализации алгоритмов. ОС Windows также предлагает компонентный подход для построения приложений. Это означает, что программист может объединять целые программы вместе, чтобы реализовать выполнение алгоритма. Возможно это за счет использования механизма Component Object Module.
Появление COM не случайно, реализация этого механизма — логичный этап развития. На схеме ниже можно увидеть ретроспективу создания механизмов в ОС Windows:
Картинка наглядно показывает, как связано появление того или иного механизма. Реализация каждого нового механизма это решение проблем, которые возникли при реализации предыдущего механизма. Картинка включает в себя такие механизмы как OLE, COM+, DCOM, которые тоже, надо сказать очень сложные с точки зрения реализации и изучения.
Некоторые полезные определения
Представленная выше картинка с годами внедрения механизмов в ОС дает наглядное представление, что механизмы, которые сегодня используются, были созданы почти 22 года назад. Создание актуальной документации для такого длительного периода времени весьма сложная задача и соответственно, когда встает вопрос об обратной разработке ПО, которое использует указанные выше механизмы, нужно точно знать, ЧТО делает каждый из них.
COM дает возможность переиспользовать куски приложения. Работает за счет того, что можно собрать исполняемый кусок кода и расположить его в реестре ОС. Кусок кода получит уникальный идентификатор и будет вызывать ОС каждый раз, как приложения будут запрашивать обработку данных по идентификатору. Для создания кода можно использовать любой компилируемый язык программирования.
OLE — механизм связывания и внедрения данных в различные приложения. Больше всего распространен в приложениях, которые используются для офисных задач. Открытие таблицы Excel в документе Word самый распространенный пример использования механизма.
DCOM — механизм, который предоставляет возможность работать с объектами COM в рамках локальной сети или Интернета.
COM+ — механизм, который может быть использован для создания распределенного на целые кластера программного обеспечения. Включается в себя COM, предоставляет для объектов механизмы, которые позволяют с ними общаться по сети. Предоставляет механизмы по синхронизации, отказоустойчивости и разграничению доступа.
Примеры и практика
Давайте попробуем посмотреть, как обозначенные выше механизмы выглядят в ПО при обратной разработке. Начнем с OLE. Как было сказано выше, этот механизм проще всего обнаружить в офисных документах. Попробуем найти такой документ.
Для исследования был выбран вот этот документ. Он представляет собой docx файл, по сути это архив, который содержит некоторое количество файлов с инструкциями, как его рендерить. Заглянем внутрь: в этом формате все данные, которые могут быть добавлены через OLE это файлы, которые расположены в директории «word/embeddings». Заголовок содержимого объекта можно видеть ниже:
Ничего особенно примечательного, такие объекты можно анализировать с использованием набор инструментов oletools.
OLE объект представляет собой файловую систему, в которую можно положить информацию необходимую для встраивания данных. Если воспользоваться инструментом oleobj, то можно увидеть, что внутри объекта находится txt файл. Кстати, это можно увидеть и из шестнадцатеричного редактора:
Объект COM — представление зависит от типа предоставляемого функционала, чаще всего в программном обеспечении используется в совокупности с WinAPI CoCreateInstance. Визуально исследовать объекты можно через относительно простой инструмент — COMView. Пример работы инструмента:
Почти все элементы пользовательского интерфейса, которыми мы пользуемся каждый день, это COM объекты.
Как найти объекты COM+? Если в COMView вы обнаружили объект, который имеет интерфейс IUnknown, перед вами COM+ объект. Например:
Таким образом можно установить, за какой функционал отвечает тот или иной объект, который используется программным обеспечением. При этом не нужно вникать в имплементацию и можно сразу разобраться в алгоритме приложения, прочитав описание объекта в интерфейсе COMView.
Статья подготовлена Александром Колесниковым в рамках курса «Reverse-Engineering. Professional». Если интересно узнать больше о программе и формате обучения на этом курсе, приходите на день открытых дверей онлайн, на котором вы также сможете познакомиться с преподавателем.
- реверс-инжиниринг
- анализ вредоносов
- com
- Блог компании OTUS
- Реверс-инжиниринг