· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.VIROLOGY —› Windows XP. Как скрыть процесс ?

Посл.отвђт Сообщенiе


Дата: Окт 4, 2003 19:47:50

Как можно скрыть процесс от таскменеджера (а лучше и от других прог) под XP?
Invisibility by Y0da при запуске выдает синий экран.
Может там чего в коде поменять, чтобы заработало?


Дата: Окт 4, 2003 20:15:41

Насколько я знаю никак :(


Дата: Окт 4, 2003 21:18:46

Насколько я знаю никак :(

Такое мнение радует :)


Дата: Окт 4, 2003 22:27:56

Спрятать его в другом процессе


Дата: Окт 5, 2003 12:17:34

WELL12

Смотри аттач. Вроде прячет. Пробовал под Win2k.

47690927__procview.zip


Дата: Окт 5, 2003 16:08:05 · Поправил: Four-F

[ WELL12: Может там чего в коде поменять, чтобы заработало? ]

Если поменять, то заработает.

1. ПереписАть NativeApiIdFromApiAddress. Она сканирует точку входа API в ntdll в надежде, что она выглядит так:
; B8 XX XX XX XX        MOV     EAX, XXXXXXXX
; 8D 54 24 04           LEA     EDX, [ESP + 004h]
; CD 2E                 INT     02Eh
; C2 YY YY              RET     YYYY

Но это верно для NT4 и 2000. В ХР уже не так.

2. Точно уже не помню, но то ли в GetKeServiceDescriptorTableShadow, то ли при постановке хука допущена, по крайней мере, одна очень грубая ошибка.

Разбираться в этом мне лень, но если ты конкретно укажешь на функцию, а еще лучше на строку, где кирдык происходит, посмотрю. Если код почистить будет работать 100%.


Дата: Окт 5, 2003 16:08:49

NEOx
При уже запущенном таск манагере постоянно валится при попытке спрятаться (вин2к).


Дата: Окт 5, 2003 17:42:38

masquer

При уже запущенном таск манагере постоянно валится при попытке спрятаться (вин2к).

А у меня нормально...


Дата: Окт 7, 2003 08:09:06

2 NEOx:Спасибо, работает! На WinXP SP1 всё тип-топ.
Вот только с сями я не дружу.
Может кто перепишет на асме?

2 Four-FА как выглядит точка входа API в ntdll в XP ?
Invisibility by Y0da при запуске выдает синий экран:
Invisibility.sys - Address F8C8242E base at F8C82000, DateStamp 3d272d0e


Дата: Окт 7, 2003 11:30:47

NEOx
У меня w2k и она прячет процесс, но когда я жму "Не перехватывать" а затем снова - прога падает!


Дата: Окт 7, 2003 11:52:01 · Поправил: Four-F

[ WELL12: А как выглядит точка входа API в ntdll в XP ? ]
ntdll!NtQuerySystemInformation
001b:77f7ee83  b8ad000000          mov       eax,000000ad
001b:77f7ee88  ba0003fe7f          mov       edx,7ffe0300
001b:77f7ee8d  ffd2                call      edx
001b:77f7ee8f  c21000              ret       0010


[ WELL12: Invisibility by Y0da при запуске выдает синий экран:
Invisibility.sys - Address F8C8242E base at F8C82000, DateStamp 3d272d0e
]

Ясно. Это первый
XCHG EBX, [EDI + 4 * EDX]
в процедуре EstablishHook.

В общем, ошибка №1. В DriverEntry вызывается GetKeServiceDescriptorTableShadow для поиска KeServiceDescriptorTableShadow. Найденный адрес помещается в pKSDTS.
CALL    GetKeServiceDescriptorTableShadow
MOV     pKSDTS, EAX
Но на ХР и на 2003, наверное тоже, GetKeServiceDescriptorTableShadow вернет 0, потому, что не найдет того что ищет. И Y0da даже не проверяет этого! А если KeServiceDescriptorTableShadow не найдена нужно либо ничего больше не делать и скорее выгружать драйвер, либо отказываться от хука win32k!NtUserBuildHwndList.

KeServiceDescriptorTableShadow не находиться потому, что предполагается, что она находится ниже KeServiceDescriptorTable. В процедуре GetKeServiceDescriptorTableShadow просто сканируется одна страница вниз. В 2000 и, вроде NT4, так оно и есть. Но в ХР KeServiceDescriptorTableShadow лежит сразу перед KeServiceDescriptorTable. Т.е. выше. Нужно менять алгоритм поиска.


Ошибка №2.
Переменная dwNQSI_NT_ID, в которую будет помещен номер ntoskrnl!NtQuerySystemInformation, инициализируется значением -1. И при постановке хука в EstablishHook проверяется не равна ли она -1. Но прикол в том, что NativeApiIdFromApiAddress не находит NtQuerySystemInformation и возвращает в eax мусор, который и рассматривается как порядковый номер ntoskrnl!NtQuerySystemInformation. Поэтому XCHG EBX, [EDI + 4 * EDX] пытается ломиться по случайному адресу, по которому ничего нет. В результате BSOD.

И таких плюшек - с непроверками на валидность - куча. Если использовать недокументированные фичи в ядре, то проверки (доходящие до паранойи) нужно делать на каждом шагу.

Кстати Y0da ищет номер NtQuerySystemInformation сканируя точку входа ntdll!NtQuerySystemInformation. Это глупо. То же самое можно сделать посмотрев в ntoskrnl!ZwQuerySystemInformation не выходя из ядра. И не нужно лишнего DeviceIoControl'а. А если уж и сканировать юзерные адреса, то ставить SEH обязательно. А еще лучше сканить ntdll!NtQuerySystemInformation, но только в юзере и передавать найденный номер через DeviceIoControl. Ибо, в данном случае, нет смысла переводить в ядро, то что можно сделать в юзере.


ЗЫ: Остальное я не смотрел. Там, наверняка, тоже ошибки есть.


Дата: Окт 7, 2003 12:24:49

Zaratustra

У меня w2k и она прячет процесс, но когда я жму "Не перехватывать" а затем снова - прога падает!

Ну это наверное просто маленький глюк, который легко исправить.


Дата: Окт 8, 2003 14:01:43

Поправляюсь: В предыдущем посте, говоря выше, ниже и т.п. я имел ввиду консоль SoftICE ;-) В памяти все наоборот. Т.е. в ХР KeServiceDescriptorTableShadow лежит ниже KeServiceDescriptorTable.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074