Blog. Just Blog

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

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

Использование SEH для антиотладки

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

Использование SEH для антиотладки

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

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

Получение списка установленных программ

15.10.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Как получить перечень установленных в системе программ? Наиболее правильный способ - это обработка списка зарегистрированных инсталляций в реестре. Список инсталляций представляет собой пачку ключей в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, в каждом из которых содержится набор параметров с описанием установленной программы. Тут есть имя программы и название ее разработчика, ссылки на деинсталлятор, на папку, куда она была установлена, на ее иконку, дата установки и т.п. Каких-то второстепенных параметров может и не быть, но основные всегда присутствуют.


Список установленных программ

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

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

MessageBox с чекбоксом "Больше не показывать"

04.10.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Еще одна хорошая практика взаимодействия с пользователем - окно сообщения с чекбоксом "Больше не показывать это диалоговое окно". Таким образом и приложение выполняет свою работу по уведомлению пользователя о каком-то периодическом событии, и пользователь сам решает, желает ли он наблюдать это уведомление в дальнейшем. Делается это при помощи стандартной функции SHMessageBoxCheck. По параметрам эта функция очень похожа на вызов MessageBox, но поддерживает ограниченное количество стилей и не весь набор кнопок, а также обязательно требует текстовую строку с уникальным идентификатором этого сообщения. В остальном все сводится к единственному вызову, типа такого:
  1. ; Уникальный идентификатор окна сообщения
  2. szUID   db '{D9108BA3-9A61-4398-BFBC-B02102C77E8A}',0
  3.         ...
  4.         ; Значение по умолчанию
  5.         DEFAULT_RESULT = 0
  6.         ; Вывести окно сообщения с галочкой "Больше не показывать"
  7.         invoke  SHMessageBoxCheck,HWND_DESKTOP,\
  8.                 szMess,szTitle,MB_YESNO+MB_ICONEXCLAMATION,\
  9.                 DEFAULT_RESULT,szUID
  10.         ; EAX = выбранная кнопка или DEFAULT_RESULT
Получившееся окно очень похоже на обычное окно сообщения, только внизу к нему добавляется локализованная строка "Больше не показывать это диалоговое окно". Если пользователь поставит эту галочку и сделает какой-либо выбор, в реестре в ключе HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\DontShowMeThisDialogAgain добавится новый параметр с именем уникального идентификатора, который был использован при создании окна сообщения, и строковым значением "NO". При очередном вызове функции SHMessageBoxCheck с таким же уникальным идентификатором, система проверяет наличие и значение этого параметра. Если параметр в реестре найден, то окно сообщения появляться не будет, а приложению сразу же вернется используемое при вызове дефолтное значение. Кстати, хотя такое окно визуально напоминает окно, создаваемое функцией MessageBox и ее аналогами, по своей структуре оно гораздо сложнее. И если у вас вдруг возникнет желание как-нибудь его кастомизировать, то сделать это будет не так просто. По крайней мере на установку хука WH_CBT оно точно не реагирует.

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

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

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

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

ZX7 Mini за авторством Antonio Jose Villena Godoy - алгоритм упаковки и распаковки, который используется в ZX-Spectrum. Он основан на алгоритме ZX7 от Einar Saukas, но код распаковщика получился более компактным. По степени компрессии алгоритм находится в "третьей тройке игроков", примерно на уровне оригинального LZ77.

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

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

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

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

Алгоритм MegaLZ был разработан участниками демо-группы MAYhEM для AmigaOS, но из открытых исходников можно собрать упаковщик для Windows. Степень компрессии неплохая, особенно на текстовых данных, на бинарных файлах чуть похуже. И при этом MegaLZ работает очень быстро как на упаковку, так и на распаковку, что тоже является его несомненным плюсом.

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

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