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

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

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

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

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

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

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

В этой части:

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

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

  • 7 677
  • 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

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

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

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

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

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

Статья GetSystemFirmwareTable() – чтение и разбор таблицы SMBIOS

  • 8 160
  • 1
Инженеры Microsoft тщательно оберегают свой системный периметр, жёстко пресекая попытки вторжения в ядерное пространство Win из вне. Анархия и вседозволенность закончилась с приходом ХР-SP3, когда юзеру был закрыт доступ к устройству \\Device\PhysicalMemory. До этого, в XP-SP2 и ниже, функцией NtOpenSection() можно было без проблем открыть любую область физической памяти как на чтение, так и на запись, со-всеми вытекающими последствиями. В результате, черви и прочая малварь чувствовала себя в ядре вольготно, поэтому мелкософт поспешил прикрыть эту лавочку. Таким образом, системе XP-SP3 выпала честь оказаться единственной, где юзеру был закрыт полный доступ к физ.памяти ОЗУ.

Однако корпорации строят операционные системы для потребителей, а им явно не понравилось такое решение. Так, чтобы не спровоцировать очередную "бурю в стакане"...

Статья ASM – анатомия кодировки "Base64"

  • 13 447
  • 2
Традиционные способы передачи данных по протоколу HTTP имеют существенный недостаток – это транспорт исключительно для текстовой информации, о чём и свидетельствует его название "Hyper-Text Transfer Protocol" (протокол передачи гипер-текста). Он находится на самом верхнем уровне(7) модели OSI, а потому пользователям в нашем лице приходится взаимодействовать именно с ним. Это создаёт определённые трудности, когда нужно передать по e-mail не текстовые, а бинарные данные ..например картинки, аудио/видео-файлы, или зипнутые архивы. Вопрос встал остро с приходом графических интерфейсов, и чтобы организовать обмен двоичной информацией по текстовым каналам, было решено кодировать BIN в читаемые символы ASCII. Решать проблемы именно такого характера выпало на долю алгоритма Base64 – рассмотрим его реализацию.

Оглавление:

1. MIME – общие сведения;
2. Принцип ручного кодирования Base64;
3. Алгоритм декодирования;
4. Родственный алгоритм...

Статья ASM. Брутфорс – алгоритмы и оптимизация

  • 11 976
  • 4
Чужая информация всегда привлекала к себе внимание, а когда к ней нет прямого доступа, возникает желание прибрести этот доступ контробандным путём. Если социальная инженерия и прочая игра на чувствах не срабатывает, остаётся идти на таран и использовать метод "грубой силы", что в дословном переводе на инглиш звучит как "Brute-Force". За периметром конкретной задачи брутфорс лишён смысла – каждый случай требует индивидуального подхода. А потому предлагаю ознакомиться с алгоритмами его реализации на программном уровне, чтобы самостоятельно решать проблемы по мере их поступления.

Оглавление:

1. Общие сведения о криптологии;
2. Практика – генератор паролей;
3. Практика – брутфорс паролей;
4. Варианты оптимизации кода;

• выбор по индексу,
• распределение по потокам Thread.
5. Заключение.
-------------------------------------------------

[COLOR=rgb(243, 121...

Статья Диски GPT и MBR – разбор полётов

  • 14 725
  • 2
Под капотом..

1. Разметка CHS и LBA;
2. Формат таблицы разделов MBR;
3. Формат таблицы разделов GPT;
4. Практика – сбор и вывод информации;
5. Заключение.
-----------------------------------------------------

1. CHS и LBA – общие сведения

Ещё в 90-х годах прошлого столетия стало очевидно, что исправно служившая столько лет трёхмерная геометрия жёстких дисков CHS (Cylinder, Head, Sector) не удовлетворяет уже современным требованиям и её срочно нужно менять. Так, следующим шагом к совершенству был ввод в прошивку HDD модуля под названием "транслятор адреса", который налету превращал физический номер сектора CHS, в логический LBA (Logical Block Address). Но и это лишь на время отложило неизбежную смерть механизма CHS-to-LBA, поскольку основная проблема была зарыта ещё глубже. Она заключалась в том...

Статья ASM – ода о клавиатуре

  • 7 329
  • 5
Если компьютер не "вещь в себе", в нём должна быть заложена система взаимодействия с пользователем. Во всех активных микро/процессорных устройствах, для ввода информации предусмотрена клавиатура, которая представляет собой вполне самостоятельный мини/компьютер со-своим встроенным процессором. В данной статье рассматривается как внутреннее устройство этого интересного девайса, так и поддержка его на уровне BIOS и операционной системы Win. Кроме того уделяется внимание системной "очереди сообщений" – основного механизма взаимодействия с окнами.

Оглавление:

1. Введение;
2. Устройство клавиатуры

• задачи встроенного контролёра i8049;
• контролёр интерфейса на мат.плате i8242;
3. Системная поддержка;
• стек драйверов клавиатуры;
• очередь сообщений клавиатуры;
4. Практика...