
Быстрый поиск
Введите фрагмент названия статьи для поиска
Как защитить DLL от выгрузки через FreeLibrary
07.11.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Как защитить DLL от выгрузки через FreeLibrary
Небольшой трюк, позволяющий защитить вашу DLL от выгрузки из процесса при помощи функции FreeLibrary. Например, если процесс обнаружил инжект посторонней библиотеки в свое адресное пространство и пытается от нее избавиться.
Читать статью целиком »
Просмотров: 636 | Комментариев: 2
Hotkey Helper 1.4
26.10.2023 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Hotkey Helper
Небольшая программа-помощник для программистов. Показывает коды нажатых клавиш, значения параметров wParam и lParam сообщений WM_KEYDOWN, WM_KEYUP, WM_CHAR, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_UNICHAR, WM_APPCOMMAND (мультимедийные клавиши), WM_DEADCHAR и WM_SYSDEADCHAR (умляуты, акуты, ударения и подобные модификаторы), результаты работы функций GetKeyState и GetAsyncKeyState с переключателями *Lock и клавишами-модификаторами, а также коды горячих клавиш из поля msctls_hotkey32, "сырой" ввод с клавиатуры и информацию о физических устройствах ввода. Предусмотрен режим работы с юникодом и ANSI. Программа написана для личных нужд, но может быть пригодится кому-нибудь еще.
Читать статью целиком »
Просмотров: 3919 | Комментариев: 30
Как отследить смену питания на ноутбуке
15.10.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Как отследить смену питания на ноутбуке
Дополнение к статье о получении информации об оставшемся заряде батареи ноутбука. Запрос состояния батареи по мере надобности - это хорошо, но будет гораздо правильнее, если система сама будет уведомлять наше приложение об изменении типа электропитания, а также об оставшемся заряде аккумулятора. Сегодня я расскажу, как это делается.
Читать статью целиком »
Просмотров: 803 | Комментариев: 0
Tesseract OCR - система распознавания текста
30.09.2023 | Категория: Software | Автор: ManHunter

Tesseract OCR - система распознавания текста
Вряд ли кто-то поспорит, что самой продвинутой системой распознавания текста в настоящее время является ABBYY FineReader. Я сам его постоянно использую при подготовке статей для сайта. Но вот возникла задача по распознаванию определенных текстов на большом количестве изображений (что-то типа схем или чертежей). Естественно, все должно делаться в автоматическом режиме, а результат был нужен уже вчера. Поискав возможные варианты решений, я остановился на Tesseract OCR. Это библиотека для распознавания текста с открытым исходным кодом, кроссплатформенная, с поддержкой юникода и более 100 языков "из коробки".
Читать статью целиком »
Просмотров: 5236 | Комментариев: 5
Отслеживание изменения метки тома
27.09.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Несколько лет назад я демонстрировал, как можно легко и просто отслеживать изменения в каком-нибудь каталоге. Кроме отслеживания подобных глобальных движений, система позволяет отслеживать изменения более точечно, например, на отдельных объектах файловой системы. Для этого есть функция SHChangeNotifyRegister. В качестве примера я разберу, как можно отслеживать изменение метки тома. На самом деле функция SHChangeNotifyRegister обладает гораздо более широкими возможностями по отслеживанию различных системных уведомлений.Сперва небольшое количество данных для работы, которые отсутствуют в инклудах FASM.
Code (Assembler) : Убрать нумерацию
- struct SHChangeNotifyEntry
- pidl dd ?
- fRecursive dd ?
- ends
- SHCNRF_ShellLevel = 0x0002
- SFGAO_FILESYSTEM = 0x40000000
- SHCNE_RENAMEFOLDER = 0x00020000
Code (Assembler) : Убрать нумерацию
- ; Настроить отслеживаемый объект
- invoke SHParseDisplayName,szWatch,NULL,\
- pidl,SFGAO_FILESYSTEM,NULL
- ; Заполнить массив отслеживаемых объектов
- mov eax,[pidl]
- mov [shentry.pidl],eax
- mov [shentry.fRecursive],FALSE
- ; Зарегистрировать обработчик уведомлений
- invoke SHChangeNotifyRegister,\
- [hwnddlg],\
- SHCNRF_ShellLevel,\
- SHCNE_RENAMEFOLDER,\
- WM_LABEL_CHANGED,\
- 1,\
- shentry
- mov [cookie],eax
- ; Освободить неиспользуемую память
- invoke CoTaskMemFree,[pidl]
Код WM_LABEL_CHANGED - это пользовательское сообщение окну приложения, его можно описать, например, как WM_LABEL_CHANGED = WM_USER + 200. При поступлении уведомления от системы именно это сообщение будет отправлено целевому окну обработчика. В параметре lParam находится код события, что очень полезно, когда приложение подписано сразу на несколько событий.
Читать статью целиком »
Просмотров: 751 | Комментариев: 0


