Re[2]: перехват апи вызова, что не так ?
От: Aleksey Pashko Украина about:blank
Дата: 27.09.06 17:10
Оценка: 2 (1)
NtUserSetClipboardData находится в Win32k.sys (syscall(11e9) NtUserSetClipboardData)

попробуй чё-то вроде:


// импортируем версию ядра NT
extern PUSHORT NtBuildNumber;

#define NTCALL(_function) KeServiceDescriptorTable(Shadow)->win32k.ServiceTable[_function]

// определяем версию ядра системы
switch(*NtBuildNumber) 
{
case 2195:  // Windows 2000
    FileID = 0x11e9;
    break; 
default:
    return STATUS_NOT_IMPLEMENTED;
}

// устанавливаем перехват    
TrueNtUserSetClipboardData = NTCALL(FileID);
    
__asm 
{
    cli                     // запрещаем прерывания
    mov eax, cr0
    mov uCR0, eax
    and eax, 0xFFFEFFFF    // сбросить WP bit
    mov cr0, eax
}

NTCALL(FileID) = NewNtUserSetClipboardData;
    
__asm 
{
    mov eax, uCR0    
    mov cr0, eax            // востановить содержимое CR0
    sti                     // разрешаем прерывания
}


я не проверял, но вроде должно работать...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.