|
|
| Посл.отвђт | Сообщен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 |
|
|
Дата: Окт 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 |