Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Windows Error Codes Helper 1.1

18.12.2023 | Категория: Мои программы | Автор: ManHunter

Сериншот программы Windows Error Codes Helper

Программа-справочник кодов и описаний ошибок Windows. Всего в базе содержится около 30.000 кодов ошибок, собранных из различных источников: ошибки обновления, коды возврата системных API, коды завершения операций, числовые коды статусов событий и т.п. Большинство ошибок имеют текстовое описание, но даже если описания нет, по названию константы с кодом ошибки можно достаточно точно определить ее источник. Кроме готовой базы программа дополнительно пытается запрашивать описание ошибки через системные функции или из выбранной динамической библиотеки.

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

Распаковка данных в формате 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

Как установить английскую раскладку при запуске HiEW

02.12.2023 | Категория: Software | Автор: ManHunter

Как установить английскую раскладку при запуске HiEW

Несмотря на почтенный возраст, hex-редактор HiEW до сих пор пользуется заслуженной популярностью среди исследователей программного обеспечения. Да, он не лишен недостатков, да, к настоящему времени имеется огромное количество альтернатив, но лично для меня HiEW остается одним из самых востребованных инструментов. К большому сожалению, автор практически прекратил развитие программы и крайне неохотно реагирует на предложения пользователей, ограничиваясь парой-тройкой незначительных исправлений в год. Теперь к основной проблеме, которую я вынес в заголовок этой статьи. У меня Windows c русским интерфейсом, соответственно, все стартующие программы запускаются с русской раскладкой по умолчанию. Это меня вполне устраивает, но только не в случае с HiEW, для которого в 99,99% случаев требуется вводить символы в английской раскладке. Конечно, можно просто переключить раскладку и не напрягаться, но мне хочется какого-то абсолютного решения задачи. Этим сегодня и займемся. А заодно потренируемся в ручной распаковке ASPack и всевозможной работе непосредственно с самим HiEW.

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

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