Сейчас на форуме: zds (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› win32k.sys |
Посл.ответ | Сообщение |
|
Создано: 20 декабря 2013 18:15 · Личное сообщение · #1 Как можна, перехватить FindWindow? Как я понял win32k.sys работает в АП процесса(Gui), нужно аттачиться ко всем существующим процессам по очереди и устанавливать перехваты? Ну как-то сложно, или что то не верно? Если я допустим вызываю с ринг3, своего приложения FindWindow, то ядро будет перебирать все процессы и вызывывать FW? Чтото не сходится ( Перебрал литературу Руссиновича и других, статьи, то ничего конкретно не описано. Просвятите плс. ![]() |
|
Создано: 20 декабря 2013 18:35 · Личное сообщение · #2 |
|
Создано: 20 декабря 2013 18:43 · Личное сообщение · #3 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 20 декабря 2013 18:48 · Личное сообщение · #4 |
|
Создано: 20 декабря 2013 18:56 · Личное сообщение · #5 Та проблема с перехватом никаких нету, если только не win32k. PSDT KeServiceDescriptorTableShadow -> win32k.ServiceTable указывает на массив из ServiceLimit элементов, но каждый элемент имеет адрес который будет валидным если приаттачиться к процессу, ( FindWindow - 0x17A , PostMessage - 0x1DB, 0x - индексы ф-ций в массиве ). И вопрос чтобы контролировать FindWindow, нужно во всех процессах ставить перехваты? Code:
![]() |
|
Создано: 20 декабря 2013 20:52 · Личное сообщение · #6 Да с коих пор в ядре надо тыкать на каждый процесс? В ядре всегда 1 раз хукалось. Хоть бы прогуглил хуки win32k. Или проверил уже. ![]() |
|
Создано: 20 декабря 2013 21:09 · Личное сообщение · #7 Да сколько можна гулить ) Да приатачился я к csrss.exe, вроде как норм перехватывает уже всё ) С одним процессором всё ок, если многопроцессорная то бсодит переодически. Просто читать нужно вот одну только литературу, а не лазить по дебрям, сбивают с толку, типо win32k у каждого процесса своя и потом каша целая, и пока росхлебаешь. Сразу бы всё по Руссиновичу делал, было бы всё ок. ![]() |
|
Создано: 21 декабря 2013 01:26 · Личное сообщение · #8 MickeyBlueEyes В сайде это всё реализовано(FindWin() тоже). В разных сессиях свой шадов, так что нужно их енумить и аттачиться. > Да сколько можна гулить ) Да приатачился я к csrss.exe, вроде как норм перехватывает уже всё ) С одним процессором всё ок > win32k у каждого процесса своя Та есчо каша. Причём там ваще csrss ? Дров один у всех процессов сессии. ![]() |
|
Создано: 21 декабря 2013 12:31 · Личное сообщение · #9 |
|
Создано: 21 декабря 2013 12:53 · Поправил: MickeyBlueEyes · Личное сообщение · #10 |
|
Создано: 21 декабря 2013 22:28 · Личное сообщение · #11 |
|
Создано: 21 декабря 2013 22:41 · Поправил: MickeyBlueEyes · Личное сообщение · #12 |
|
Создано: 22 декабря 2013 06:16 · Поправил: Dr0p · Личное сообщение · #13 MickeyBlueEyes Исходный код сайда утёк в паблик. Некоторые замечания. 1. Не используется аттачь к сессиям, так как IDP захват сервисного диспетчера глобальный в системе(ntos). 2. Описание в тектовике частично deprecated, размер структуры фиксирован. 3. Видимо аверы что то детектят из архива, так при загрузке на народ произошёл детект(наверно лк). Это не существенно и этому не уделялось внимание. Всё как обычно - чистка, если есть сигнатуры(вы не малварщики, но всё же замечу что формат - микод). 4. Необходимо выполнить ребилд фильтра если надо(чтобы выделить необходимый функционал). Сайд можно не ребилдить, если не важен размер, не выполнялась оптимизация размера, так как он и так малый. LDE уже включен в мотор. Пак для билда тут где то выложен мной. 5. Csrss. Не знаю зачем вам это нужно, могу лишь предположить что пилите кейлоггер, так как обычно интересуются этим процессом именно из за потока сырого ввода(RIT). Опишу что нужно делать. Есть два годных метода. A. Код RIT в целом одинаков во всей линейке(вплоть до 8). Необходимо фильтровать NtReadFile(вызывается из StartDeviceRead()). Это ядерный поток, так что фильтрацию следует делать непосредственно в т-процессинге сайда(выбрать ID сервиса, в общем тривиал), в вашем сст-фильтре(в таком случае нет смысла вообще во всём, ибо палево). Сразу скажу что за это могут отрезать яйца, так как получится боевой логгер с функцией недетекта.. B. Без фильтрации можно использовать вектор на RIT(see win32k._aDeviceTemplate: DEVICE_TEMPLATE[]). 6. Дампы возможно deprecated, так как я не помню когда последний раз дампил, билдил обьектники, надо сдампить заново. pass: vx ![]() |
![]() |
eXeL@B —› Программирование —› win32k.sys |