Содержание
ЗАКЛЮЧЕНИЕ 15
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 16
ПРИЛОЖЕНИЕ А 17
«Код программы – сборщика информации об аппаратных устройствах системы» 17
ВВЕДЕНИЕ
В данной курсовой работе рассмотрен пример реализации сбора и вывода сведений об аппаратных устройствах системы (процессоре, видеоподсистеме и т.п.) на языке ассемблера высокого уровня MASM. Компьютер был всегда совокупностью нескольких аппаратных устройств, взаимодействующих между собой тем или иным способом. И для работы с этими устройствами или правильного использования компьютера иногда требуется знать фирму производителя, модель и другие характеристики системы. Вся эта информация зачастую больше полезна операционной системе, нежели пользователям, или программистам прикладных программ. Но такие программы на данный момент пользуются спросом и у обычных пользователей. Для сбора информации используется обращение к объектам WMI через API функции. Для упрощения работы пользователя с программой создано диалоговое окно.
-
Теоретические сведения
Ассемблер высокого уровня MASM, изобретенный компанией Microsoft, был в течение некоторого времени самым популярным ассемблером, доступным для неё. Это поддерживало широкое разнообразие макросредств и структурированность программных идиом, включая конструкции высокого уровня для повторов, вызовов процедур и чередований. Все это делает MASM весьма удобным средством написания программ. Одним из основных достоинств MASM является возможность использования стандартных функций WINAPI, в отличие, к примеру, от TASM.
WINAPI – это общее наименование целого набора базовых функций интерфейсов в программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт» и совместимой с ними свободной бесплатной операционной системы ReactOS. Использование функций WINAPI намного облегчает работу с прерываниями, файлами и внешними устройствами. Однако применение WINAPI несет с собой и некоторые трудности, в частности – достаточно сложная отладка и привязка к определенной компьютерной платформе.
1.2 MASM 32
За последние 15 – 20 лет мир операционных систем персональных компьютеров в корне изменился. На смену однозадачным 16 – разрядным операционным системам пришли многозадачные 32(64) – разрядные операционные системы с графическим интерфейсом. Вряд ли в настоящее время удастся застать человека, работающего, к примеру, в операционной системе MSDOS, разве что, в учебных целях.
В связи с этим программы были ориентированы на 32(64) – разрядную операционную систему Windows. Для этого использовался пакет MASM32, собранный Стивенсом Хатчинсоном. В данный пакет входит огромное множество облегчающих разработку программ вещей – пользовательские макросы, встроенные функции и макросы, дебаггер и еще много различных программ, помогающих программисту в написании программ.
Создание исполнительного .exe файла можно представить в виде трех этапов, изображенных на рисунке 1:
Написание .asm файла
Создание .obj файла
Создание .exe файла
Рисунок 1 – Этапы создания .exe файла
При написании .asm файла следует быть внимательным с кодировкой файла, однако в пакете MASM32 предусмотрен текстовый редактор Masm32 editor, автоматически подстраивающий нужную кодировку для данного типа файла. После написания .asm файла следует создать .obj файл с помощью транслятора ml.exe и далее отлинковать его линковщиком link.exe. Транслятор и линковщик предусмотрены в пакете MASM32.
1.3 Информация об устройствах компьютерной системы
Поскольку в Windows нельзя напрямую обращаться к устройствам системы, доступ к ним, а также сбор информации осуществляется через средства самой операционной системы. И из-за расширяемости количества устройств и их вида, сбор информации о них нельзя произвести, используя простой вызов API функций для соответствующих устройств. Для этого в Windows существует несколько технологий. Но в данной программе мы будем использовать реализацию стандарта WBEM для Windows – WMI, доступ к которому осуществляется через модель DCOM.
1.4 Спецификация WBEM
Web-based Enterprise Management (WBEM) (можно перевести как веб-ориентированное управление предприятием) — это инициатива, технология, поддержанная многими ведущими производителями программного и аппаратного обеспечения (Microsoft, Compaq, ВМС, Cisco и Intel) и направленная на решение проблемы сбора и использования диагностической и управляющей информации в корпоративных сетях, включающих оборудование от различных поставщиков и использующих многочисленные разнообразные протоколы, операционные системы и распределенные прикладные системы.
Традиционно, в управлении сложными сетями используются различные протоколы и интерфейсы: например, протокол Simple Network Management Protocol (SNMP) применяется для управления сетевыми ресурсами (концентраторами, маршрутизаторами и т. д.), а для управления настольными системами может использоваться Desktop Management Interface (DMI). Технология WBEM предполагает создание открытой среды для средств администрирования, позволяющей им свободно взаимодействовать друг с другом и со всеми объектами управления, а также максимальное использование уже существующих технологий и стандартов. Поставленная цель сравнима с задачей, решаемой сетью World Wide Web: связать воедино поставщиков и потребителей информации, ничего не "знающих" о том, как работают конкретные системы на другом конце цепочки передачи этой информации. Перспектива использования веб-технологий для более традиционных инструментов администрирования и определила появление в названии новой инициативы слов Web-based.
WBEM — это не протокол, модель или интерфейс, а инициатива, предлагающая некоторый набор стандартов для управления корпоративной сетью. Эти стандарты должны решать следующие задачи:
Определить структуру и соглашения, необходимые для получения информации об объектах управления.
Обеспечить централизованный доступ к этой информации, чтобы различные клиенты и средства администрирования могли поставлять данные, получать и анализировать их.
Обеспечить авторизованный доступ к объектам управления из любой точки сети для анализа состояния этих объектов и управления ими.
В основе WBEM лежит реализация общей информационной модели (Common Information Model, CIM) — объектно-ориентированной схемы (schema) объектов управления. Объекты управления — это представления системных (сетевых) ресурсов, а схема — единый механизм описания данных всех имеющихся типов. WBEM предлагает некий информационный стандарт, определяющий способы представления данных, и функциональный стандарт, описывающий механизмы взаимодействия компонентов
Схема CIM образуется из модели ядра (Core), применяемой во всех областях администрирования, и множества общих (Common) моделей, описывающих типовую информационную структуру конкретных типов объектов администрирования — систем, сетей, баз данных, приложений и устройств. Схема является расширяемой: схемы-расширения представляют собой дополнения общей схемы, ориентированные на конкретные объекты, например, может существовать схема-расширение для некоторой операционной системы.
1.5 COM и DCOM
COM (англ. Component Object Model — объектная модель компонентов; произносится как [ком]) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно. Стандарт воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования. Стандарт COM мог бы быть универсальным и платформо-независимым, но закрепился в основном на операционных системах семейства Microsoft Windows. В современных версиях Windows COM используется очень широко. На основе COM были реализованы технологии: Microsoft OLE Automation, ActiveX, DCOM, COM+, DirectX, а также XPCOM.
Выпущенная в 1996 году технология DCOM (англ. Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности RPC). DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети. Главным конкурентом DCOM является другая известная распределённая технология — CORBA.
Как DCOM, так и CORBA решают задачу вызова метода объекта, расположенного на другой машине, а также передачу ссылки на объект с одной машины на другую.
Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC.
Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и из каких машин может создавать экземпляры объекта и вызывать его методы.
1.6 WMI
Windows Management Instrumentation (WMI) в дословном переводе — это инструментарий управления Windows. Если говорить более развернутo, то WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows.
1.6.1 Обзор
Технология WMI — это расширенная и адаптированная под Windows реализация стандарта WBEM (на англ.), принятого многими компаниями, в основе которого лежит идея создания универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML.
В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в неё свои классы, объекты, методы и свойства.
WMI, основанный на CIM, также является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.
Важной особенностью WMI является то, что хранящиеся в нём объекты соответствуют динамическим ресурсам, то есть параметры этих ресурсов постоянно меняются, поэтому параметры таких объектов не хранятся постоянно, а создаются по запросу потребителя данных. Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows: %SystemRoot%\System32\WBEM\Repository.
1.6.2 Классы, события и безопасность WMI
Так как WMI построен по объектно-ориентированному принципу, то все данные операционной системы представлены в виде объектов и их свойств и методов.
Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Security и WMI.
Классы имеют свойства и методы и находятся в иерархической зависимости друг от друга, то есть классы-потомки могут наследовать или переопределять свойства классов-родителей, а также добавлять свои свойства.
Свойства классов используются для однозначной идентификации экземпляра класса и для описания состояния используемого ресурса. Обычно все свойства классов доступны только для чтения, хотя некоторые из них можно модифицировать определенным методом. Методы классов позволяют выполнить действия над управляемым ресурсом.
Каждому экземпляру класса можно обратиться по полному пути, который имеет следующую структуру:
[\\ComputerName\NameSpace][:ClassName][.KeyProperty1=Value1][,KeyProperty2=Value2]…] , где :
ComputerName – имя компьютера
NameSpace – название пространства имен
ClassName – имя класса
KeyProperty1=Value1, KeyProperty2=Value2 – свойства объекта и значе по которому он идентифицируется.
Пример обращения к процессу с именем «Calc.exe», который запущен на локальной машине: \\.\CIMv2:Win32_Process.Name="Calc.exe"
Экземпляры классов могут генерировать события, к которым можно подписываться. При наступлении события WMI автоматически создает экземпляр того класса, которому соответствует это событие. Такой механизм удобно использовать для выполнения определенной команды при наступлении определенного события, то есть следить за состоянием объектов операционной системы.
Общая безопасность в WMI реализуется на уровне операционной системы, а дополнительная политика безопасности основана на уровнях пространств имен и протокола DCOM. То есть если пользователь не имеет права делать какое-то действие через операционную систему, он не сможет это сделать и через WMI. Если же пользователю дано какое-то право в операционной системе, то это ещё не означает, что это право будет и в WMI, так как в WMI действуют дополнительные параметры безопасности на уровне пространств имен.
Каждый объект операционной системы имеет свое описание безопасности (SD) со своим списком доступа (ACL), в котором перечислены идентификаторы пользователей (SID) и их привилегии. Каждое пространство имен может иметь собственное SD со своим ACL, где пользователям могут быть назначены разрешения на чтение данных, выполнение методов, запись классов и данных и другие. Данные о дополнительных разрешениях хранятся в репозитории WMI. Отдельные классы из пространств имен не имеют собственных описаний безопасности, они наследуют их от своего пространства имен.
По умолчанию администратор компьютера имеет полные права на использование WMI, а остальные пользователи могут лишь вызывать методы, считывать данные и записывать в репозиторий экземпляры классов провайдеров WMI.
Для доступа к инфраструктуре WMI используется протокол DCOM, через который пользователь подключается к WMI. Чтобы определить, какие права будут у подключившегося пользователя, используется механизмы олицетворения и аутентификации протокола DCOM.
Средства работы с WMI :
wmimgmt.msc — оснастка консоли управления MMC для настройки WMI на локальном компьютере.
winmgmt.exe — консольная утилита управления WMI локального компьютера.
wbemtest.exe — графическая утилита для взаимодействия со структурой WMI на локальном или удаленном компьютере.
wmic.exe — консольная утилита для взаимодействия со структурой WMI на локальном или удаленном компьютере.
mofcomp.exe — компилятор MOF-файлов для расширения структуры WMI, управления библиотекой классов WMI и восстановления репозитория.
1.6.3 Язык запросов WMI
Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одним из разновидностей SQL. Основное его отличие от ANSI SQL — это невозможность изменения данных, то есть с помощью WQL возможна лишь выборка данных с помощью команды SELECT. Помимо ограничений на работу с объектами, WQL не поддерживает такие операторы как DISTINCT, JOIN, ORDER, GROUP, математические функции. Конструкции IS и NOT IS применяются только в сочетании с константой NULL.
Запросы WQL обычно применяются в скриптах, но их также можно протестировать в программе Wbemtest и в консольной утилите Wmic (утилита wmic не требует написания ключевого слова SELECT и полей выборки).
Реализация программы для получения информации о системе
Любая программа, написанная под Windows с использованием WINAPI должна иметь строго определенную структуру, а именно: содержать некую «стартовую» функцию, которой передается управление при запуске программы и оконную функцию, которая позволяет обрабатывать события, происходящие в этой программе.
Программа, описываемая в данном курсовом проекте, работает следующим образом. Сначала идет создание и регистрация класса окна, потом создание, отображение и обновление самого окна, после чего в оконной функции при получении сообщения WM_PAINT идет сбор данных о различных частях компьютерной системы и производится отрисовка полученных данных. Т.к. в начале мы обновляем окно, то в оконную функцию посылается сообщение WM_PAINT и данные, полученные из WMI выводятся на экран при старте программы.
Процесс получения этих данных заключается в следующем. Прежде всего инициализируется COM библиотека при помощью функции CoInitialize. Задаются настройки безопасности через CoInitializeSecurity, определяющие уровни доступа для работы с объектами на текущей машине, а также на других компьютерах в сети. Далее идет создание объекта WbemLocator и получение указателя на интерфейс для работы с ним. У него есть всего один метод - ConnectServer, с помощью которого мы соединяемся через DCOM с пространством имен WMI и получаем указатель на интерфейс IWbemServices объекта WbemServices. И через метод ExecQuery, посылая определенные запросы на языке WQL, мы уже можем получить непосредственный доступ к объектам, описывающим части компьютерной системы. Так например, в соответствии с приложением, запрос для получения объекта, описывающего центральный процессор будет выглядеть следующим образом : «SELECT * FROM Win32_Processor».
-
Руководство пользователя
Для получения данных об аппаратных устройствах компьютерной системы необходимо просто запустить программу и подождать 2-3 секунды, пока идет сбор данных.
|