Хук ntdll!KiUserExceptionDispatcher
Попытался просплайсить KiUserExceptionDispatcher.
Нечто вроде:
void STDAPICALLTYPE xKiUserExceptionDispatcher ( EXCEPTION_RECORD *er, CONTEXT *con )
{
OutputDebugString(__FUNCTION__);
Real_KiUserExceptionDispatcher(er, con);
return ;
}
При установке хука в services.exe (WIN XP SP2) — система крэшится.
Вопрос — почему это произошло ?
Re: Хук ntdll!KiUserExceptionDispatcher
P.S.:
Если OutputDebugString убрать, то всё ок.
Re: Хук ntdll!KiUserExceptionDispatcher
От:
Keetsune
Дата: 28.04.10 06:17
Оценка:
Здравствуйте, gribodemon, Вы писали:
G>Попытался просплайсить KiUserExceptionDispatcher.
G>Нечто вроде:
G>
G>void STDAPICALLTYPE xKiUserExceptionDispatcher ( EXCEPTION_RECORD *er, CONTEXT *con )
G>{
G> OutputDebugString(__FUNCTION__);
G> Real_KiUserExceptionDispatcher(er, con);
G> return ;
G>}
G>
G>При установке хука в services.exe (WIN XP SP2) — система крэшится.
G>Вопрос — почему это произошло ?
__FUNCTION__ это строковая константа?
Как вариант OutputDebugString сама каким то образом вызывает KiUserExceptionDispatcher в результате чего происходит переполнение стека и соответственно краш.
Re[2]: Хук ntdll!KiUserExceptionDispatcher
От:
Аноним
Дата: 28.04.10 06:21
Оценка:
Здравствуйте, Keetsune, Вы писали:
K>__FUNCTION__ это строковая константа?
Predefined Macros
K>Как вариант OutputDebugString сама каким то образом вызывает KiUserExceptionDispatcher в результате чего происходит переполнение стека и соответственно краш.
Исключено .
Re[2]: Хук ntdll!KiUserExceptionDispatcher
От:
Keetsune
Дата: 28.04.10 06:25
Оценка:
Ещё вариант если __FUNCTION__ это ANSI строка, а вы вызываете OutputDebugStringW, наоборот вряд ли краш будет, а в этом случае может быть.
Re[3]: Хук ntdll!KiUserExceptionDispatcher
От:
Аноним
Дата: 28.04.10 06:30
Оценка:
K>Ещё вариант если __FUNCTION__ это ANSI строка, а вы вызываете OutputDebugStringW, наоборот вряд ли краш будет, а в этом случае может быть.
В настройках проекта <CharacterSet>MultiByte</CharacterSet>. Я вызываю OutputDebugStringA.
Re: Хук ntdll!KiUserExceptionDispatcher
G>При установке хука в services.exe (WIN XP SP2) — система крэшится.
G>Вопрос — почему это произошло ?
потому что это очень хитрая функция:
0:001> u ntdll!KiUserExceptionDispatcher
0:001> u ntdll!KiUserExceptionDispatcher
ntdll!KiUserExceptionDispatcher:
7c828570 8b4c2404 mov ecx,dword ptr [esp+4]
7c828574 8b1c24 mov ebx,dword ptr [esp] ; <-медитировать здесь
7c828577 51 push ecx
7c828578 53 push ebx
7c828579 e8e98f0000 call ntdll!RtlDispatchException (7c831567)
Как много веселых ребят, и все делают велосипед...
Re[4]: Хук ntdll!KiUserExceptionDispatcher
Здравствуйте, Аноним, Вы писали:
K>> наоборот вряд ли краш будет, а в этом случае может быть.
В других приложениях всё норм. Крэшится именно services.exe
Re[2]: Хук ntdll!KiUserExceptionDispatcher
Здравствуйте, ononim, Вы писали:
O>потому что это очень хитрая функция:
А я всё думал почему автор того сорца сделал нечто вроде:
MY_NAKED void filter_handler() {
__asm {
mov ecx,[esp+4]
mov ebx,[esp]
pushad
cmp dword ptr [ebx],0xc0000005
jne _leave_it
mov ebp,esp
push ecx
push ebx
call filter_exceptions
mov esp,ebp
_leave_it: popad
push _KiUserExceptionDispatcher
add [esp],7
ret
}
}
Re[3]: Хук ntdll!KiUserExceptionDispatcher
От:
ononim
Дата: 28.04.10 07:20
Оценка:
O>>потому что это очень хитрая функция:
G>А я всё думал почему автор того сорца сделал нечто вроде:
кстати вот интересно, а вы (как и автор "того сорца") в курсе про VEH (
http://msdn.microsoft.com/en-us/library/ms679274(VS.85).aspx ) ?
Как много веселых ребят, и все делают велосипед...
Re[4]: Хук ntdll!KiUserExceptionDispatcher
Здравствуйте, ononim, Вы писали:
O>кстати вот интересно, а вы (как и автор "того сорца") в курсе про VEH (http://msdn.microsoft.com/en-us/library/ms679274(VS.85).aspx ) ?
Да, Clerk уже подлечил. =)
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить