Blog. Just Blog

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

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

Отключение режима "Умная зарядка" на ноутбуке Huawei

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

Отключение режима "Умная зарядка" на ноутбуке Huawei

Обычно дома и на работе я сижу за стационарными компами, а служебным ноутбуком пользуюсь только в особых случаях. И эти случаи обычно подразумевают автономную работу. Так вот, на рабочем ноутбуке Huawei я стал замечать такую нездоровую ситуацию, когда перед каким-нибудь выездным мероприятием я ставлю его заряжаться, а батарея до конца все равно никак не заряжается. Перепробовал много зарядных устройств и проводов, результат одинаковый. Даже думал, что это какая-то неисправность. Окончательно отчаявшись, полез искать решение в эти ваши интернеты, и, как ни странно, оно нашлось. Оказалось, что все дело в так называемом режиме "Умная зарядка". Эта опция типа должна продлить срок жизни аккумулятора за счет того, что при подключении от сети в него недозаливается аж 30% заряда.

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

Как узнать, какие привилегии есть у процесса

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. Поочередно перебирая эти структуры, можно определить все привилегии, которыми обладает процесс.

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

Как защитить DLL от выгрузки через FreeLibrary

07.11.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Небольшой трюк, позволяющий защитить вашу DLL от выгрузки из процесса при помощи функции FreeLibrary. Например, если процесс обнаружил инжект посторонней библиотеки в свое адресное пространство и пытается от нее избавиться.

Сперва немного теории. При вызове функции LoadLibrary увеличивается на единицу внутренний счетчик загрузок, но повторной загрузки библиотеки не выполняется. При вызове функции FreeLibrary, соответственно, этот счетчик уменьшается. При достижении счетчиком нулевого значения библиотека выгружается из памяти. На этом основан метод "защиты" от выгрузки, когда в самой DLL несколько раз дополнительно вызывается LoadLibrary, тем самым увеличивая счетчик загрузок. Но ведь никто не мешает вызвать FreeLibrary сто или сто тысяч раз подряд, пока счетчик не будет обнулен. Поэтому я взял слово "защита" в кавычки.

Правильным способом защититься от выгрузки DLL из целевого процесса будет использование функции GetModuleHandleEx с флагом GET_MODULE_HANDLE_EX_FLAG_PIN. Функция должна вызываться из DLL. В этом случае загруженный модуль будет оставаться в памяти вплоть до завершения основного процесса, независимо от того, сколько раз будет вызвана функция FreeLibrary.

Просмотров: 416 | Комментариев: 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. Программа написана для личных нужд, но может быть пригодится кому-нибудь еще.

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

Как отследить смену питания на ноутбуке

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

Как отследить смену питания на ноутбуке

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

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

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