Хук ntdll!KiUserExceptionDispatcher
От: gribodemon  
Дата: 28.04.10 06:08
Оценка:
Попытался просплайсить KiUserExceptionDispatcher.
Нечто вроде:


void STDAPICALLTYPE xKiUserExceptionDispatcher ( EXCEPTION_RECORD *er, CONTEXT *con )
{
    OutputDebugString(__FUNCTION__);
    Real_KiUserExceptionDispatcher(er, con);
    return;
}


При установке хука в services.exe (WIN XP SP2) — система крэшится.
Вопрос — почему это произошло ?
kiuserexceptiondispatcher splice
Re: Хук ntdll!KiUserExceptionDispatcher
От: gribodemon  
Дата: 28.04.10 06:10
Оценка:
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
От: ononim  
Дата: 28.04.10 06:31
Оценка: 6 (2)
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
От: gribodemon  
Дата: 28.04.10 06:31
Оценка:
Здравствуйте, Аноним, Вы писали:

K>> наоборот вряд ли краш будет, а в этом случае может быть.


В других приложениях всё норм. Крэшится именно services.exe
Re[2]: Хук ntdll!KiUserExceptionDispatcher
От: gribodemon  
Дата: 28.04.10 06:35
Оценка:
Здравствуйте, 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
От: gribodemon  
Дата: 28.04.10 12:29
Оценка:
Здравствуйте, ononim, Вы писали:

O>кстати вот интересно, а вы (как и автор "того сорца") в курсе про VEH (http://msdn.microsoft.com/en-us/library/ms679274(VS.85).aspx) ?


Да, Clerk уже подлечил. =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.