|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 23, 2004 00:13:27 У меня есть драйвер для сокрытия процесса под Win NT\2K, а на Win XP не работает. Исходник драйвера к программе Invisibility by Yoda. Здесь где-то говорили, что нужно переписать в драйвере функцию NativeApiIdFromApiAddress. Привожу ее код: ; ; Returns: -1 = error ; else = Native API ID ; ; Args: pApiEntry = EntryPoint address of a NTDLL routine ; ; Should look like.... ; pApiEntry: ; 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 ; NativeApiIdFromApiAddress PROC USES ESI EDI EBX, pApiEntry : LPVOID SUB EAX, EAX DEC EAX ; EAX -> -1 == error ; signature check MOV ESI, pApiEntry LODSB CMP AL, 0B8h JNZ @@exit LODSD LODSD CMP EAX, 00424548Dh JNZ @@exit LODSW CMP AX, 02ECDh JNZ @@exit LODSB CMP AL, 0C2h JNZ @@exit ; grab NT API index MOV EAX, pApiEntry MOV EAX, [EAX + 1] @@exit: RET NativeApiIdFromApiAddress ENDP Она сканирует точку входа 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. В ХР уже не так, а так: ntdll!NtQuerySystemInformation 001b:77f7ee83 b8ad000000 mov eax,000000ad 001b:77f7ee88 ba0003fe7f mov edx,7ffe0300 001b:77f7ee8d ffd2 call edx 001b:77f7ee8f c21000 ret 0010 Помогите, пожалуйста, кому не влом переписать эту функцию. |
|
|
Дата: Авг 23, 2004 12:13:54 [ Crash: Здесь где-то говорили, что нужно переписать в драйвере функцию NativeApiIdFromApiAddress. ] "Я этот человек" (c) Карабас-Барабас. Но я там ещё говорил, что одного этого будет недостаточно. ПереписАть NativeApiIdFromApiAddress под ХР самое простое, что нужно сделать. Если ты не в состоянии сделать даже это, то вряд ли сможешь довести дело до конца. |
|
|
Дата: Авг 23, 2004 13:56:09 Я почистил драйвер, удалил из него GetKeServiceDescriptorTableShadow и все, что с ней связано. Теперь драйвер прячет только процесс, но не его окна. Для меня главное - спрятать процесс. После моих действий получился такой вот драйвер (аттач). Насколько я понимаю, для работы в XP в NativeApiIdFromApiAddress нужно заменить следующие строчки: CMP EAX, 00424548Dh CMP AX, 02ECDh соответственно на следующие: CMP EAX, 07FFE0300BAh CMP AX, 0D2FFh Поправьте меня, если я не прав. _1274073913__invisible.asm |
|
|
Дата: Авг 23, 2004 20:14:09 вполне достаточно так (работает в 2к/ХР/2к3) - NativeApiIdFromApiAddress PROC or eax,eax JZ @F mov ecx,[eax] or ecx,ecx JZ @F cmp byte ptr [ecx],0B8h jnz @F mov eax,[ecx+1] jmp exit1 @@: xor eax,eax dec eax exit1: RET NativeApiIdFromApiAddress ENDP предпологается, что eax на входе получен прямяком из mov eax,(_IRP PTR [esi]).SystemBuffer |
|
|
Дата: Авг 23, 2004 21:21:13 Спасибо. В Win2000 работает. Осталось проверить на WinXP. Надеюсь, на ней тоже пойдет. |
|
|
Дата: Авг 24, 2004 16:33:42 Corpse А вот на Win XP опять не идет. В чем может быть дело? Драйвер стал таким: _796919311__invisible.asm |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.075 |