Похожие презентации:
Изучение процессов Windows 10
1.
Изучение процессов Windows 102.
Процессы в WindowsПроцесс, в простейшем обозначении –
исполняемая программа.
Процесс содержит один или больше потоков –
контекстов выполнения.
Поток – минимальная единица, для которой ОС
выделяет исполняемое время.
Поток может исполнять любую исполняемую
часть программы, загруженную в адресное
пространство процесса.
3.
Что называется процессом в Windows?Каждый процесс имеет:
виртуальное адресное пространство;
список хэндлов (дескрипторов, описателей) на
системные объекты;
контекст безопасности;
ID;
переменные окружения;
класс приоритета;
ограничения рабочего набора;
минимум один поток.
4.
Как посмотреть все процессы?С помощью стандартного диспетчера задач;
Использовать утилиты Process Hacker или
Process Monitor из Sysinternals Suite;
Стандартная
консольная
утилита tasklist;
Get-Process в
Powershell.
5.
Как посмотреть все процессы?В итоге будут вызваны одни из нескольких системных
вызовов Win32API:
EnumProcesses – перечислит ID всех процессов;
OpenProcess – “откроет” процесс по ID, создав его
дескриптор (описатель), через который можно запросить
любые аттрибуты;
CreateToolhelp32Snapshot – создаст отпечаток
дескрипторов (описателей) всех запущенных процессов;
Process32First + Process32Next – для перебирания
дескрипторов из отпечатка процессов.
https://learn.microsoft.com/en-us/windows/win32/api/tlhelp32/
6.
Как убить процесс?В графических утилитах – опцией меню;
Стандартная консольная утилита taskkill;
Kill-Process в Powershell.
Во всех случаях в итоге вызовется системный
вызов TerminateProcess из Win32API.
7.
Какие есть процессы?3 вида процессов:
Системные – отражают работу одного или
нескольких модулей ядра, в основном
существуют для удобного отображения
ресурсов, выделенных под работу части ядра.
Примеры системных процессов:
System, Registry, Memory Compression, Idle,
Interrupts.
8.
Какие есть процессы?Пользовательские – могут быть управляемы из
режима пользователя.
Большинство системных утилит –
пользовательские процессы.
Примеры:
explorer.exe, SecurityHealthSystray.exe,
msedge.exe, cmd.exe.
9.
Какие есть процессы?Служебные – не предусматривают
взаимодействие с пользователем и часто
являются критичными для работы всей
системы.
Пример: svchost.exe – хост-процесс для
пользовательских и системных служб. Службы
обычно загружаются в виде dll файлов в
виртуальную память процесса svchost.exe.
Другие примеры:
csrss.exe, wininit.exe, winlogon.exe, lsass.exe,
10.
ПотокиПосмотреть список
потоков для конкретного
процесса можно с
помощью утилит Process
Explorer, Process Hacker
или в отладчике.
11.
ПотокиАттрибуты:
Имя;
Контекст (все регистры, в т. ч. указатель на стек и на следующую инструкцию);
В т.ч. регистр RIP (в 64 bit OS) или EIP (в 32 bit OS) – адрес следующей (на
данный момент) инструкции для выполнения;
Указатель на TEB – адрес структуры с информацией о потоке;
Thread ID;
Priority;
Отладчик также может запомнить и показать следующие аттрибуты:
Entry Point – адрес первой инструкции выполнения;
Локальная переменная errno с последним результатом системного вызова;
Время, затраченное на выполнение в user/kernel mode в контексте потока;
12.
ПотокиСистемные вызовы для работы с процессами
и потоками:
CreateProcess*
OpenProcess
TerminateProcess
ExitProcess
CreateThread
TerminateThread
ExitThread
https://learn.microsoft.com/enus/windows/win32/api/processthreadsapi/
OpenThread
SetProcess*
GetProcess*
13.
Адресное пространствоЗаполнение виртуального адресного пространства
можно посмотреть в отладчике.
14.
Адресное пространствоРазные типы регионов:
IMAGE – загруженные при создании процесса
или с помощью LoadLibrary модули программы
(файлы);
MAPPED – отображенные с диска файлы;
PRIVATE – остальные (не отображенные с диска и
не являющиеся частью программы), обычно
выделенные с помощью VirtualAlloc.
https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-memory_basic_information
15.
Адресное пространствоРазные состояния выделенной памяти:
Commited – виртуальная память выделена и
отображена на физическую (реальную)
оперативную память (с помощью MMU в
процессоре);
Reserved – виртуальная память выделена, но не
доступна для использования и не ассоциирована с
физической памятью;
Free – свободный регион виртуальной памяти.
16.
Адресное пространствоСистемные вызовы для работы с виртуальной
памятью:
VirtualAlloc*
VirtualFree*
VirtualLock
CreateFileMapping*
MapViewOfFile*
UnmapViewOfFile*
FlushViewOfFile
И другие
VirtualProtect*
VirtualQuery*
https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/
17.
СтруктурыEPROCESS – все аттрибуты процесса, взгляд из
ядра;
PEB – аттрибуты процесса, доступные из
пространства пользователя;
TEB – аттрибуты потока, доступные из
пространства пользователя;
LDT_ENTRY – таблица хэндлов
(дескрипторов) объектов ОС.
18.
Структуры19.
ОтладчикиX96dbg – графический опенсорсный отладчик
не от Microsoft;
WinDbg – неграфический неопенсорсный
отладчик от Microsoft. Позволяет отлаживать
как пользовательские процессы, так и ядро
(удаленно). Можно открыть дополнительные
окна (кроме командного окна) для вывода
информации как в графическом отладчике.
20.
ОтладчикиWindbg с минимальной информацией о
процессе
21.
ОтладчикиWindbg основные команды:
?, .help, .hh – справки по командам;
!address – карта виртуальной памяти процесса;
lm – загруженные модули;
Sym* - команды для работы с отладочными
символами.
Остальные команды найти на тематическом
сайте.
http://windbg.info/doc/1-common-cmds.html
22.
Запись логовProcess Monitor – для записи иерархии процессов (в
т. ч. при загрузке) и трассировки некоторых
аргументов некоторых системных вызовов
(настраивается фильтрами). С опицей boot logging
можно записать логи при перезагрузке;
Api monitor – более подробное логирование любых
системных вызовов, можно гибко настроить.
23.
ЗаданияИзучить основные аттрибуты процессов и потоков Windows 10;
Изучить утилиты для просмотра информации о процессах Windows:
Посмотреть карту памяти и список потоков в отладчике
x96dbg.
Создать рабочую среду windbg, в которой будут видны
состояние регистров, стэка, область памяти, инструкции и
список потоков.
Записать boot log утилитой Process monitor при
перезагрузке и посмотреть иерархию запускавшихся при
старте системы процессов.
Программное обеспечение