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

Обработка изменения иконок в системном трее
19.06.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
С обновлением иконок в системном трее разобрались, теперь давайте разберем, как можно отслеживать изменения в трее. Причем изменения касаются не только добавления-удаления иконок, но также изменения всплывающих подсказок и изменения иконки с сохранением ее индекса.Code (Assembler) : Убрать нумерацию
- CLSCTX_LOCAL_SERVER = 0x04
- S_OK = 0
- struct NOTIFYITEM
- pszExeName dd ?
- pszTip dd ?
- hIcon dd ?
- hWnd dd ?
- dwPreference dd ?
- uID dd ?
- guidItem rd 4
- ends
- ; GUID {D782CCBA-AFB0-43F1-94DB-FDA3779EACCB}
- IID_INotificationCB dd 0D782CCBAh
- dw 0AFB0h
- dw 043F1h
- db 094h, 0DBh, 0FDh, 0A3h, 077h, 09Eh, 0ACh, 0CBh
- ; INotificationCB interface
- struct INotificationCB
- QueryInterface dd ?
- AddRef dd ?
- Release dd ?
- ; INotificationCB
- Notify dd ?
- ends
- ; GUID {FB852B2C-6BAD-4605-9551-F15F87830935}
- IID_ITrayNotify dd 0FB852B2Ch
- dw 06BADh
- dw 04605h
- db 095h, 051h, 0F1h, 05Fh, 087h, 083h, 009h, 035h
- ; ITrayNotify interface
- struct ITrayNotify
- QueryInterface dd ?
- AddRef dd ?
- Release dd ?
- ; ITrayNotify
- RegisterCallback dd ?
- SetPreference dd ?
- EnableAutoTray dd ?
- ends
- ; GUID {25DEAD04-1EAC-4911-9E3A-AD0A4AB560FD}
- CLSID_TrayNotify dd 025DEAD04h
- dw 01EACh
- dw 04911h
- db 09Eh, 03Ah, 0ADh, 00Ah, 04Ah, 0B5h, 060h, 0FDh
- ; GUID {00000000-0000-0000-C000-000000000046}
- IID_IUnknown dd 000000000h
- dw 00000h
- dw 00000h
- db 0C0h, 000h, 000h, 000h, 000h, 000h, 000h, 046h
Читать статью целиком »
Просмотров: 975 | Комментариев: 1

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

Работа с сервисами Windows на Ассемблере
Давно хотел поэкспериментировать с сервисами Windows, наконец дошли руки. Еще со времен Windows XP я пользуюсь программой Service Tree от А.Н.Гусарова, но в ней имеются досадные косяки, поэтому есть большое желание написать что-нибудь подобное. А в этой статье будут складироваться все наработки по теме сервисов.
Читать статью целиком »
Просмотров: 1818 | Комментариев: 15

Отслеживание загрузки dll в память процесса
13.05.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Ранее я уже рассказывал, как можно легко и просто получить список динамических библиотек, загруженных в ваш процесс. Сегодня расскажу о возможности отслеживания загрузки и выгрузки DLL. Начиная с Windows Vista, появилась функция LdrRegisterDllNotification. С ее помощью в приложении регистрируется callback-функция, которая будет вызываться каждый раз, как только в ваше приложение будет загружена DLL или какая-то DLL будет выгружена из его адресного пространства. Установка обработчика выполняется одной командой:Code (Assembler) : Убрать нумерацию
- ; Зарегистрировать обработчик загрузки и выгрузки DLL
- invoke LdrRegisterDllNotification,0,LdrDllNotification,NULL,Cookie
- or eax,eax
- jnz loc_error
Code (Assembler) : Убрать нумерацию
- LDR_DLL_NOTIFICATION_REASON_LOADED = 1
- LDR_DLL_NOTIFICATION_REASON_UNLOADED = 2
- struct NOTIFICATION_DATA
- Flags dd ?
- FullDllName dd ?
- BaseDllName dd ?
- DllBase dd ?
- SizeOfImage dd ?
- ends
- proc LdrDllNotification NotificationReason:DWORD,\
- NotificationData:DWORD,Context:DWORD
- pusha
- mov eax,[NotificationReason]
- ; EAX -> действие с DLL
- ; LDR_DLL_NOTIFICATION_REASON_LOADED = загружена
- ; LDR_DLL_NOTIFICATION_REASON_UNLOADED = выгружена
- ; Получить полный путь до файла DLL
- mov eax,[NotificationData]
- mov eax,[eax+NOTIFICATION_DATA.FullDllName]
- mov eax,[eax+4]
- ; EAX -> полное имя файла DLL
- ; Получить базовый адрес DLL
- mov eax,[NotificationData]
- mov eax,[eax+NOTIFICATION_DATA.DllBase]
- ; EAX -> DllBase библиотеки
- popa
- ret
- endp
Читать статью целиком »
Просмотров: 1695 | Комментариев: 1

Как узнать состояние и размеры панели задач Windows
05.05.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Для получения рабочей области экрана, доступной вашему приложению, может потребоваться определение положения и размера панели задач. Управлять положением и состоянием панели задач пользователь может через меню свойств или через апплет настроек. А для получения всех необходимых данных надо воспользоваться функцией SHAppBarMessage. Но сперва структура и несколько констант, которые будут нам нужны для работы.Code (Assembler) : Убрать нумерацию
- struct APPBARDATA
- cbSize dd ?
- hwnd dd ?
- uCallbackMessage dd ?
- uEdge dd ?
- rc RECT
- lParam dd ?
- ends
- ABM_GETSTATE = 4
- ABM_GETTASKBARPOS = 5
Code (Assembler) : Убрать нумерацию
- mov [abd.cbSize],sizeof.APPBARDATA
- invoke SHAppBarMessage,ABM_GETTASKBARPOS,abd
- ; [abd.uEdge] -> положение панели задач
- ; 0 = слева
- ; 1 = сверху
- ; 2 = справа
- ; 3 = снизу
- ; [abd.rc] -> координаты Панели задач
Читать статью целиком »
Просмотров: 952 | Комментариев: 0

Проверка подлинности Windows
29.04.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter

Проверка подлинности Windows
Не только в самой Windows есть средства для проверки собственной активации, у обычных приложений тоже имеется возможность проверять подлинность операционной системы, на которой они запущены. Сегодня познакомимся со способами, которые для этого используются.
Читать статью целиком »
Просмотров: 1708 | Комментариев: 9
