Blog. Just Blog

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

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

Как исправить кракозябры после установки пакета локализации Windows

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

Как исправить кракозябры после установки пакета локализации Windows

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

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

Установка языка ввода по умолчанию при входе в систему

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

Установка языка ввода по умолчанию при входе в систему

Небольшая полезняшка, облегчающая работу на компьютере. Была установлена русская Windows, при установке, соответственно, выбрана русская раскладка клавиатуры. Теперь при входе в систему, когда запрашивается пароль, по умолчанию выставлена русская раскладка. А пароль-то из английских букв! Конечно, переключить раскладку займет секунду, но почему бы не сделать жизнь чуть комфортнее?

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

Ассемблер: получаем имя файла оболочки

27.09.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
В этой статье я расскажу, как можно программно получить имя файла оболочки Windows. Зачем это нужно? Например, есть программа, которая инжектит свою библиотеку в работающую копию explorer.exe и при этом подразумевает, что такой процесс в системе гарантированно должен присутствовать. В подавляющем большинстве случаев действительно все работает, никаких нареканий нет. Но стоит запустить программу под альтернативным шеллом, например, Aston Desktop, и она неизбежно падает с ошибкой, потому что explorer.exe в системе вообще не запущен. Проверки на соответствие оболочки в программе нет, и вместо корректного информирования пользователя о причинах невозможности запуска мы получаем фатальное падение. И хорошо, если не вместе с системой.

Чтобы найти процесс оболочки, сперва надо определить ее главное окно. В MSDN для этого рекомендуют воспользоваться следующим кодом:
  1.         ; Найти окно с классом "Progman"
  2.         invoke  FindWindow, szClass, NULL
  3.         ...
  4. szClass db 'Progman',0
Недостатки такого способа, надеюсь, очевидны. Ничто не мешает любому приложению создать окно с классом "Progman", а при отсутствии запущенного штатного шелла это гарантированно приведет к неверным результатам.

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

Как узнать дату создания или модификации ключа реестра

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

Как узнать дату создания или модификации ключа реестра

Еще одна несложная, но полезная задача: как узнать дату создания или модификации ключа реестра? Например, некоторые программы для очистки реестра от всякого мусора показывают эту информацию. Еще ее можно посмотреть, если экспортировать через regedit ветку реестра в формате текстового файла (*.txt). А вот как получить эту информацию из своего приложения, я вам сейчас расскажу.

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

Контроль запуска процессов на Ассемблере

29.08.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сегодня разберем интересную задачу: надо отслеживать запуск приложений в системе и, в случае необходимости, выборочно блокировать их запуск. Решения могут быть различные, я предлагаю вот такой способ. Он заключается в том, что в цепочку AppCertDlls встраивается наша собственная библиотека-обработчик. При первом и любом последующем вызове функции CreateProcess обработчику будет передан полный путь до запускаемого файла.

Такой способ перехвата используется еще со времен Windows 2000, но подробно не документирован до сих пор. Ничего удивительного, что "коробочный" FASM совершенно не в курсе используемых в нем данных. Сперва немного констант:
  1. ; Флаги запроса
  2. APPCERT_IMAGE_OK_TO_RUN  = 1
  3. APPCERT_CREATION_ALLOWED = 2
  4. APPCERT_CREATION_DENIED  = 3
  5.  
  6. ; Флаги результата
  7. STATUS_SUCCESS      = 0x00000000
  8. STATUS_UNSUCCESSFUL = 0xC0000001
Переходим к созданию основного модуля. В экспорте вашей dll обязательно должна быть функция CreateProcessNotify которая и отвечает за обработку запуска процесса. У нее два параметра: lpApplicationName - указатель на строку имени файла запускаемого процесса и Reason - флаг запроса. Если с именем файла все более-менее понятно, то по флагу запроса надо внести ясность. Этот флаг может принимать одно из трех возможных значений. APPCERT_IMAGE_OK_TO_RUN - система опрашивает вашу библиотеку на предмет того, доверяете вы указанному процессу или нет. Такое бывает, если ваш обработчик первый или единственный. Если запускаемая программа вас устраивает, то верните STATUS_SUCCESS, в противном случае установите флаг результата в STATUS_UNSUCCESSFUL. Варианты запроса APPCERT_CREATION_ALLOWED или APPCERT_CREATION_DENIED поступают в том случае, если в системе уже установлены обработчики запуска приложений, какой-то из них уже проверил запускаемый файл и принял решение, можно его запускать или нет. Если передаваемый функции флаг имеет значение APPCERT_CREATION_ALLOWED, то процесс с этим именем может быть создан, а если APPCERT_CREATION_DENIED, то, соответственно, нет.

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

prev 01 02 03 04 05 06 07 08 09 ... 18 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 3 (0.0223 сек.) / Память: 4.5 Mb
Наверх