Программирование

Статья ASM. Модель драйвера графического адаптера WDDM

  • 7 077
  • 13
Всем привет!
В данной статье рассматриваются вопросы доступа к свойствам графических адаптеров на языке ассемблера. Мы заправим свои мозговые баки топливом DirectX смешав его в должной мере с OpenGL, заглянем в современную модель драйверов видеоадаптеров Vista+, ознакомимся с базовыми терминами графической инфраструктуры, и смешаем весь этот коктейль с исполняемым кодом. Основной акцент делается на способ вычисления объёма локальной видеопамяти VRAM свыше 4 Gb, что является проблематичным на 32-битных системах Windows.

Оглавление:

1. Интерфейсы DirectX и OpenGL;
2. Модель драйверов дисплея WDDM;
3. Доступ к инфраструктуре DXGI;
4. Методы и функции D3DKMT_xx;
5. Практика – чтение данных видеоадаптера;
6. Итоги.
-----------------------------------------

1. Интерфейсы DirectX и OpenGL

Словосочетание...

Статья ASM – техники из старого сундука [2]

  • 4 887
  • 3
Всем привет!

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

1. Самомодификация кода

Система MS-DOS была колыбелью ныне могущественной империи Win. Она выгодно отличалась тем, что предоставляла программистам полную свободу действий, т.к. защита любого уровня в ней отсутствовала как сущность. Вплоть до Win2K это была поистине золотая эпоха, с...

Статья CPUID – идентификация процессора

  • 11 181
  • 5
Современные процессоры имеют весьма внушительный набор команд. Общее их кол-во можно подсчитать открыв том(2) Интеловского мануала . На различных площадках народ сильно преувеличивает утверждая, будто число опкодов давно перевалило за тысячу. Чтобы-уж наверняка и ради собственного интереса, я скопировал из оглавления указанной доки в блокнот весь перечень, и к своему удивлению на выходе получил всего 632 строки текста, в каждой из которых одна инструкция. Судя по-всему, на данный момент именно такой объём полностью удовлетворяет нашим требованиям, иначе монархи из Intel не упустили-бы возможности записать на свой счёт очередной новый опкод. Из всего этого листа, в данной статье предлагаю рассмотреть одну из интересных инструкций под...

Статья ASM – Безопасность Win. [2]. Токен и авторизация пользователей

  • 5 387
  • 3
..продолжим первую часть статьи, где были представлены общие сведения о системных объектах Win. Чтобы не потерять логическую нить, предыдущая рекомендуется к прочтению, поскольку здесь ставка делается на то, что вы уже знакомы с понятиями: идентификатор пользователя SID, дескриптор безопасности объекта и его список DACL. Организовать качественную подсистему безопасности можно лишь в том случае, когда есть чёткая модель того, что нужно защищать и кому/что разрешается делать. В этой области инженерами Microsoft проделан огромный объём работы, так-что сконцентрируем своё внимание исключительно на основных моментах. За роялем сегодня токен юзера, его права и привилегии.

Содержание:

1. Аутентификация пользователей в системе;
2. Маркер доступа к объектам (токен);
3. Права и привилегии пользователей;
4. Практика – информация о...

Статья ASM – Безопасность Win. [1]. Разграничение прав доступа к объектам

  • 5 795
  • 2
Всем привет!
На повестке дня – подсистема безопасности Win. Рассмотрим такие понятия как: системные объекты, права пользователей и их привилегии, токены и дескрипторы безопасности, списки контроля доступа DACL/SACL и записи в них ACE, проведём экскурсию в процесс Lsass.exe, познакомимся с диспетчером объектов, системным монитором SRM и узнаем, каким образом утилите "runas.exe" удаётся запускать процессы с админскими правами. Одним словом попытаемся бросить камень в стеклянную форточку Win и посмотрим, что из этого выйдет.

Содержание:

1. Знакомство с объектами
2. Дескриптор безопасности объекта

2.1. Структура дескриптора SD
2.2. Списки DACL и записи в них АСЕ
2.3. Эксперимент в отладчике WinDbg
3. Формат идентификатора SID
4. Под занавес..
-------------------------------------------------------

1...

Статья Создание драйвера под Windows. Часть 1: Введение

  • 25 603
  • 16

Предыстория

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

После 20 минут поисков по сети я наткнулся на Github Павла Иосифовича (zodiacon - Overview). Личность легендарная в своих кругах, достаточно посмотреть на его репозиторий, публикации и выступления на именитых конференциях. Помимо этого, Павел является автором/соавтором нескольких книг: «Windows Internals» (книга, имеющаяся у меня на полке, которая принесла немало пользы), и «Windows Kernel Programming» 2019 года выпуска (бегло пролистав 11 Глав или 390 страниц, я понял – это то, что...

Статья ASM – CNG (часть 2). Шифрование AES-256 в режиме GCM

  • 13 204
  • 4
Это вторая часть разговора об инфраструктуре шифрования нового поколения "Crypt Next Generation". В первой мы рассмотрели базовые сведения о шифровании данных, и режимы работы алгоритма AES. В том-что это действительно мотор поколения Next можно убедиться на сайте MSDN, где на невинный запрос описания какой-либо из библиотеки CAPI, мелкософт встречает нас грозным предупреждением типа: -"Этот API устарел! Новое программное обеспечение должно использовать CNG, т.к. Microsoft может удалить этот API в будущих выпусках". Таким образом нас просто ставят перед фактом, подталкивая на изучение современных методов. Так не будем-же противиться этому..

Содержание:
...

Статья ASM – CNG (часть 1). Модуль криптографии нового поколения

  • 7 127
  • 11
Windows Vista взошла на трон в 2007-ом, но спустя буквально 1.5 года была с позором свергнута общественными критиками. Уныло шагая прочь, она с тоскою поглядывала на кричащее вслед сообщество, которое даже не успело должным образом оценить все её достоинства. Злую шутку с Вистой сыграл второпях наляпанный интерфейс, а ведь система подряжалась прийти к нам не с пустыми руками и хотела представить миру массу новых разработок, которые мы всё-таки взяли на вооружение, и пользуемся ими по сей день.

Одним из новшеств стала "криптография нового поколения" под названием CNG, или Cryptorgaphy Next Generation. Инфраструктура была призвана заменить отживший свой век на XP интерфейс CAPI (Crypto-API), оставив его лишь для совместимости. Входящими в состав CNG примитивами тут-же поспешили воспользоваться изголодавшиеся на тот момент сетевые протоколы SSL/TLS (Secure-Socket-Layer, и Transport-Layer-Secure), и как следствие весь зоопарк...

Статья ASM – интерфейс защиты данных DPAPI

  • 6 093
  • 4
Все, кто хоть немного дорожит своей информацией, направляют фокус на её защиту. Учитывая эти обстоятельства, начиная ещё с Win-2k инженеры Microsoft ввели в состав своей ОС специальный интерфейс и назвали его "Data-Protection Programming Interface", или коротко DPAPI. В результате, не прибегая к услугам внешних библиотек, у нас появилась возможность защищать свои данные вполне крипткостойким механизмом, причём эти данные могут находиться как на жёстком диске, так и непосредственно в памяти. В состав этого интерфейса входят всего 4 функции, однако практическая его реализация довольно сложна и корнями уходит в нёдра операционной системы, иначе DPAPI не получил-бы столь высокий кредит доверия в высшем обществе. В данной статье рассматриваются технические детали этого интерфейса, и некоторые советы к области его применения.

Содержание:


1. Data Protect – основная идея;
2...

Статья ASM – работа с базами SQLite (часть 2. Читаем cookies браузеров)

  • 4 842
  • 2
Рассмотрев в предыдущей части формат и основные возможности подсистемы SQLite, перейдём к операциям с данными, которые осуществляются посредством вызова методов из библиотеки sqlite3.dll. Самая последняя версия 3.35.05 этой либы выдаёт на экспорт всего 329 функций, предоставляя нам широкий выбор действий. Некоторые из них могут иметь переменное число параметров, и автор не стал делать на них акцент. Он просто оформил все функции с соглашением о вызове "cdecl" (декларация языка С++), а не стандартным "stdcall". Это означает, что на выходе, ответственность за очистку аргументов функции в стеке полностью возложена на нас, для чего ассемблер FASM имеет макросы cinvoke и ccall (последний используется для вызовов по указателю). Экскурсии по часто используемым...