Blog. Just Blog

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

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

Упаковка и распаковка данных с помощью Runtime-функций

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

Упаковка и распаковка данных с помощью Runtime-функций

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

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

Перезапуск приложения в случае его аварийного завершения

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

Перезапуск приложения в случае его аварийного завершения

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

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

Как добавить замещающий текст в поле EDIT

15.03.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Продолжаем ставить эксперименты с полем EDIT. Сегодня будем добавлять в поле ввода так называемый "cue banner", что с некоторой натяжкой можно перевести на русский язык как "замещающий текст". Очень полезная штуковина, помогающая пользователю при заполнении форм с неочевидным форматом вводимых данных, а также снимающая с разработчика различные костыльно-велосипедные задачи по кастомной обработке полей ввода. Смотрите сами. По умолчанию в пустом поле ввода располагается замещающий текст. Это может быть пример данных или информация о необходимости заполнения, да вообще что угодно. Когда пользователь переходит на это поле, текст заполнителя исчезает и позволяет вводить свой собственный текст. А если поле ввода теряет фокус, но текст при этом все еще отсутствует, тогда замещающий текст возвращается обратно на свое место. При этом замещающий текст фактически не является содержимым поля, его нельзя получить через WM_GETTEXT или GetWindowText, он никуда не попадет при отправке незаполненной формы.

Для добавления замещающего текста в однострочное поле EDIT используется сообщение EM_SETCUEBANNER. В параметре lParam передается указатель на юникодную строку, которая будет отображаться в качестве замещающего текста. При этом не имеет значения, какую кодировку имеет само приложение, строка должна быть только в юникоде. В параметре wParam передается режим отображения замещающего текста. В старых мануалах вы можете встретить информацию, что этот параметр зарезервирован и там обязательно должен быть ноль. В последней редакции официальной документации написано, если значение нулевое, то подсказка будет пропадать сразу же при установке фокуса на EDIT, а если указано значение 1, то подсказка пропадет только при начале ввода пользовательского текста. И похоже, что из-за этого дополнения на сайте MSDN заявлена поддержка операционной системы как минимум Windows Vista, хотя на деле EM_SETCUEBANNER прекрасно работает, начиная с Windows XP.

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

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

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

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

Вот мы и добрались до одной из самых популярных библиотек для компрессии данных aPLib. Ее разработал Joergen Ibsen в 1998 году, но исходники по какой-то причине до сих пор не раскрыты, хотя сама библиотека бесплатная. За счет превосходных показателей сжатия и легкой интеграции, aPLib используется в некоторых упаковщиках исполняемых файлов. В 2019 году Emmanuel Marty сделал, казалось бы, невозможное. Ему удалось не только отреверсить алгоритм упаковки aPLib, но и улучшить на 5-7% степень сжатия, полностью сохранив при этом совместимость с оригинальным кодом для распаковки. Таким образом, алгоритм aPLib теперь можно считать открытым.

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

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

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

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

Алгоритм компрессии NRV (Not Really Vanished) разработан автором знаменитого упаковщика UPX Markus F.X.J. Oberhumer. Алгоритм используется в этом упаковщике, а также в нескольких вариантах входит в состав библиотеки с открытым кодом UCL. Высокая скорость обработки данных сочетается с очень хорошей степенью компрессии данных.

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

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.14 сек. / MySQL: 3 (0.0469 сек.) / Память: 5 Mb
Наверх