• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

  • 22 548
  • 16

Предыстория

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

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

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

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

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

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

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

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

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

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

Содержание:


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

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

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

Статья ASM – работа с базами SQLite (часть 1. Формат файла)

  • 5 346
  • 1
Традиционно, для работы с СУБД используются скриптовые языки типа: Python, SQL, Tcl, Perl и прочие. Это вполне оправдано, поскольку их синтаксис максимально приближен к человеческой речи, а огромный набор рычагов и предметно-ориентированных модулей превращает решение вполне серьёзных проблем, чуть-ли не в игру. Единственным недостатком скриптов является скорость выполнения ими задач, т.к. в отличии от компилируемых программ они работают через интерпретатор – т.е. сначала построчный анализ текста, перевод его в байт-код, и лишь потом исполнение.

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

Статья USB Flash [часть 2] – программирование

  • 5 528
  • 2
..предыдущая часть – теория (рекомендуется к прочтению).

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

В этой части:

1. Функции менеджера настройки: SetupDi**(), CM_Get**() ;
2. DeviceIoControl() – формат пакета Setup ;
3. Практика – сбор информации...

Статья USB Flash [часть 1] – устройство

  • 6 364
  • 8
В этом году интерфейсу USB исполнилось ровно 25-лет, а потому предлагаю рассмотреть его реализацию как на уровне архитектуры, так и программную составляющую. Сырая версия 1.0 была опубликована в начале 1996 года, а уже осенью 98-го, мир увидел первую стабильную редакцию v1.1. Однако на практике оказалось, что из шины USB можно выжать намного больший потенциал. Так, в 2000 году была опубликована очередная спецификация USB 2.0, в которой предусмотрено повышение пропускной способности сразу в десятки раз. Это позволило существенно расширить круг подключаемых к шине высоко-скоростных устройств:

USB_Property.png


Содержание:

1. Топология шины: хост-контролёр, Root-Hub, режимы работы Control-Bulk-Interrupt;
2. Логическая организация: конечные точки Endpoint, протокол шины USB;
3. Типы дескрипторов устройств.
------------------------------------------------------------

1...

Статья ASM – скроллинг части консольного буфера Win

  • 4 784
  • 13
Современную консоль можно рассматривать как франшизу на DOS. В документации Microsoft она числится в розысках под кличкой CUI, или "Console User Interface". В отличии от программ с графическим фейсом GUI, консольные приложения выполняются намного быстрее и абсолютно не требовательны к системным ресурсам, что привлекает внимание программистов всех мастей. В софтвейрном боксе этого интерфейса есть где развернуться – оперировать им позволяет набор из 65 специальных функций под общим названием . Однако в своей массе мы привыкли использовать только часть из них, в результате чего виндозная Con приобретает достаточно унылый вид.

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

Статья Пишем дизассемблер из библиотеки Dbgeng.dll

  • 4 048
  • 5
Одним из приоритетных направлений в разработке любого продукта является его отладка. Ведь мало написать удовлетворяющий требованиям исправно работающий код, так нужно ещё и протестить его в "токсических условиях", на предмет выявления всевозможных ошибок. Для этих целей, инженеры Microsoft включили в состав ОС полноценный механизм дебага в виде двух библиотек пользовательского режима: это Dbgeng.dll – основной движок отладки (Debug Engine), и Dbghelp.dll – вспомогательный процессор отладочных символов PDB (Program Database).

На моей Win-7, библиотека символов имеет размер 0.8 Мб и выдаёт на экспорт аж 205 стандартных API-функций, а вот вторая Dbgeng.dll в три раза тяжелее своего (со)брата с размером ~2.5 Мб, зато экспортирует с выхлопной трубы всего 3 функции. От сюда следует, что эта либа от нас явно что-то скрывает, поскольку жалкие три процедуры никак не могут весить более двух мегабайт. В данной статье мы попытаемся заглянуть внутрь...