Blog. Just Blog

Образ мышления: Assembler

То, что не удается запрограммировать на Ассемблере, приходится паять
Образ мышления: Assembler - RSS-канал Образ мышления: Assembler - Карта сайта

Распаковка данных в формате LZF на Ассемблере

14.12.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Распаковка данных в формате LZF на Ассемблере

Первоначально алгоритм компрессии LZF был разработан Marc Lehmann, но в последующем был немного оптимизирован и облегчен Ильей Муравьевым. По степени сжатия находится в одном ряду с LZE и LZ4, а по скорости упаковки и распаковки показывает просто отличные результаты. При этом основная оптимизация сжатия достигается при упаковке текстовых данных.

Читать статью целиком »
Просмотров: 340 | Комментариев: 1

Как узнать, какие привилегии есть у процесса

11.12.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Ранее я уже писал, как устанавливать нужные привилегии для процесса. Сегодня будет пример, как можно получать список доступных привилегий. Но сперва немного констант и структур, которые необходимы для работы с привилегиями.
  1. TOKEN_QUERY     = 8h
  2. TokenPrivileges = 3
  3.  
  4. struct LUID
  5.   LowPart  dd ?
  6.   HighPart dd ?
  7. ends
  8.  
  9. struct LUID_AND_ATTRIBUTES
  10.   pLuid       LUID
  11.   Attributes  dd ?
  12. ends
  13.  
  14. struct TOKEN_PRIVILEGES
  15.   PrivilegeCount   dd ?
  16.   Privileges       LUID_AND_ATTRIBUTES
  17. ends
Теперь теория. Каждому процессу соответствует свой дескриптор маркера доступа (токен), через который выполняется большинство операций, касающихся безопасности, прав доступа и подобного. Для получения информации о привилегиях надо запросить информацию о токене с помощью функции GetTokenInformation, указав в качестве класса сведений TokenPrivileges, то есть данные о привилегиях. Токен должен быть предварительно открыт с помощью функции OpenProcessToken или OpenThreadToken. На выходе будет получен массив структур TOKEN_PRIVILEGES. Поочередно перебирая эти структуры, можно определить все привилегии, которыми обладает процесс.

Читать статью целиком »
Просмотров: 432 | Комментариев: 2

Drag'n'Drop файлов в консольное окно

06.12.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Очередная порция странного. На этот раз я решил попробовать реализовать обработку перетаскивания файлов в консольное окно. Для обычных GUI-приложений с этим нет вообще никаких сложностей, а вот с консольными приложениями придется повозиться. Вопреки тиражируемым в этих ваших интернетах статьям, с консольными окнами не работают никакие стандартные способы перетаскивания данных типа манипулирования с расширенными стилями консольного окна WS_EX_ACCEPTFILES, с принудительным назначением ему DragAcceptFiles, с субклассированием на предмет обработки сообщения WM_DROPFILES или даже через реализацию интерфейса IDropTarget. Ни-че-го. В тоже время, если открыть системный командный интерпретатор cmd.exe и попытаться перетащить на его консольное окно какой-нибудь файл из Проводника или файлового менеджера, то в командной строке появится полный путь к этому файлу. Значит какие-то зачатки технологии Drag'n'Drop для консольных окон все-таки имеются.

С помощью обработки событий консоли удалось выяснить, что при перетаскивании файла в консольное окно, путь к нему передается посимвольно через события KEY_EVENT. При более детальном анализе я также выяснил, что четкой системы тут нет, часть символов передается с событием нажатия и отпускания клавиши, а часть только с отпусканием клавиш. Единственные закономерности заключаются в том, что такие символы передаются обязательно со счетчиком повторений равным 1 и точно с флагом отпускания клавиш.

Также не стоит забывать про различные программы-обработчики клавиатуры типа Punto Switcher, которые самостоятельно обрабатывают введенные символы и затем могут менять их раскладку и последовательность через эмуляцию ввода с клавиатуры.

Читать статью целиком »
Просмотров: 520 | Комментариев: 4

Получение информации о шрифте с помощью функции GetFontResourceInfo

29.11.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Получение информации о шрифте с помощью функции GetFontResourceInfo

В статье о загрузке шрифтов из памяти я упомянул об использовании недокументированной функции GetFontResourceInfo, но не привел никаких примеров ее вызова. А функция интересная, так что самое время исправить этот пробел в знаниях.

Читать статью целиком »
Просмотров: 530 | Комментариев: 3

Парсинг метаданных DSF-файлов на Ассемблере

11.11.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Парсинг метаданных DSF-файлов на Ассемблере

Во время очередного пиратского набега на торренты мне попался музыкальный альбом в формате DSF. Это контейнер для аудиопотока в супер-мега качестве, разработанный компаниями Sony и Philips. В результате и файлы получаются по 400-500 мегабайт на одну песню. Может быть для аудиофилов такое качество как-то можно обосновать, но для меня этот формат представляет исключительно спортивный интерес. А точнее, как из таких файлов извлечь метаданные.

Читать статью целиком »
Просмотров: 327 | Комментариев: 0

prev 01 ... 05 06 07 08 09 10 11 ... 73 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0026 сек.) / Память: 4.5 Mb
Наверх