Blog. Just Blog

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

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

Исследование защиты программы TaskmgrPro

13.01.2020 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы TaskmgrPro

TaskmgrPro - плагин для стандартного Диспетчера задач Windows, значительно расширяющий его возможности. К списку стандартных вкладок Диспетчера добавляются функции работы с автозагрузкой, расшаренными ресурсами, соединениями TCP/IP, а также групповой запуск и остановка процессов и служб по заранее сформированным спискам. За самую минимальную лицензию требуется выложить почти тридцатку баксов. Делать мы этого, конечно, не будем, а сделаем что-нибудь другое, менее затратное по финансам.

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

Исследование защиты программы Process Master

02.12.2018 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы Process Master

Программа Process Master - менеджер процессов с возможностью принудительного завершения выбранных процессов и якобы даже способный обнаруживать руткиты. Ну и все, вроде как. И за все это грандиозное разнообразие функций, которое студенты-первокурсники пишут в качестве лабораторных работ, аффтар требовал быренько метнуться в кассу на предмет выкладывания своих кровных. К счастью, проект прекратил свое развитие практически сразу после начала, оффсайт сдох, так что нам остается только попрактиковаться в реверсивной некромантии. Ну а что, почему бы и нет?

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

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

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", а при отсутствии запущенного штатного шелла это гарантированно приведет к неверным результатам.

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

Quick Task Terminator 1.4

03.05.2017 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Quick Task Terminator

Программа Quick Task Terminator предназначена для принудительного завершения процессов, а также для получения краткой информации о пути запуска, параметров командной строки и версии запущенных процессов. Также из меню программы можно принудительно перезагрузить или выключить компьютер или отправить его в режим гибернации. Комбинация "горячих" клавиш Alt+Ctrl+Shift+Win+K убивает процесс, окно которого активно в данный момент, что позволяет аварийно выходить из зависших полноэкранных приложений. Alt+Ctrl+Shift+Win+I - информация о процессе, окно которого активно в данный момент. Alt+Ctrl+Shift+Win+M - открыть список процессов (аналог клика на иконке). "Горячие" клавиши можно изменить в настройках программы. Как и остальной мой софт, Quick Task Terminator написан для личных нужд, поэтому обладает только нужным мне функционалом. Прототипом для его создания стал плагин Terminator от оболочки Aston, к которому я в свое время очень привык.

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

Получение информации о другом процессе

17.05.2013 | Категория: Образ мышления: Assembler | Автор: ManHunter
Возможность получения информации о стороннем процессе раскрывает перед программистами и пользователями широкие возможности. Это могут быть продвинутые менеджеры процессов, антивирусные и антитроянские программы, утилиты для реверсной инженерии и многое другое. У меня, к примеру, подобные функции используются в программе Quick Task Terminator. Давайте посмотрим, как это делается. Для начала надо описать структуры, необходимые для работы с процессами. В стандартном комплекте FASM их, естественно, нет, но это и неудивительно.
  1. ; Структура для получения данных о процессе под Win32
  2. struct PROCESS_BASIC_INFORMATION
  3.     ExitStatus       dd ?
  4.     PebBaseAddress   dd ?
  5.     AffinityMask     dd ?
  6.     BasePriority     dd ?
  7.     uUniqueProcessId dd ?
  8.     uInheritedFromUniqueProcessId dd ?
  9. ends
  10.  
  11. ; Структура PEB процесса под Win32
  12. ; Process Enviroment Block или блок окружения процесса
  13. ; Содержит все параметры пользовательского режима, ассоциированные
  14. ; системой с текущим процессом
  15. struct PEB
  16.     InheritedAddressSpace    db ?
  17.     ReadImageFileExecOptions db ?
  18.     BeingDebugged            db ?
  19.     b003                     db ?
  20.     Mutant                   dd ?
  21.     ImageBaseAddress         dd ?
  22.     Ldr                      dd ?
  23.     ProcessParameters        dd ?
  24. ends
  25.  
  26. ; Юникодная строка в Win32
  27. struct UNICODE_STRING
  28.     Length                   dw ?
  29.     MaximumLength            dw ?
  30.     Buffer                   dd ?
  31. ends
  32.  
  33. ; Структура RTL_USER_PROCESS_PARAMETERS под Win32
  34. struct RTL_USER_PROCESS_PARAMETERS
  35.     MaximumLength            dd ?
  36.     Length                   dd ?
  37.     Flags                    dd ?
  38.     DebugFlags               dd ?
  39.     ConsoleHandle            dd ?
  40.     ConsoleFlags             dd ?
  41.     StdInputHandle           dd ?
  42.     StdOutputHandle          dd ?
  43.     StdErrorHandle           dd ?
  44.     CurrentDirectoryPath     UNICODE_STRING
  45.     CurrentDirectoryHandle   dd ?
  46.     DllPath                  UNICODE_STRING
  47.     ImagePathName            UNICODE_STRING
  48.     CommandLine              UNICODE_STRING
  49. ends
В сегменте данных на основании структур опишем необходимые нам массивы для чтения данных о процессе.
  1. section '.data' data readable writeable
  2. ...
  3. ; Данные о 32-битных процессах
  4. Info            PROCESS_BASIC_INFORMATION
  5. peb             PEB
  6. pparam          RTL_USER_PROCESS_PARAMETERS
Подготовительный этап завершен, можно переходить к основной части. Получение информации о процессе выполняется в несколько стадий. Сперва надо открыть процесс для чтения и получения данных, затем с помощью функции NtQueryInformationProcess надо прочитать общую информацию о процессе в структуру PROCESS_BASIC_INFORMATION (с параметром ProcessBasicInformation). Имейте в виду, что приложение, которое выполняет такой запрос, должно обладать соответствующими привилегиями. Затем надо прочитать блок окружения процесса PEB, который находится по адресу, определенному в PebBaseAddress структуры PROCESS_BASIC_INFORMATION. Дальше нам надо загрузить параметры процесса в структуру RTL_USER_PROCESS_PARAMETERS, адрес которой определен в структуре PEB параметром ProcessParameters. На самом деле в PEB содержится гораздо больше различных значений, но нас интересует только эта структура. Именно в ней записана нужная нам информация - путь к исполняемому файлу процесса и его командная строка.

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

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