Re: Безопасность процессов и потоков в Windows
От: Bill_Prisoner2  
Дата: 16.04.06 21:00
Оценка: 1 (1)
Кстати анитивирус Касперского просто перехватывает ядерную NtOpenProcess, а перехватчик выглядит примерно так:
NTSTATUS NewNtOpenProcess (
    OUT PHANDLE ProcessHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    IN PCLIENT_ID ClientId OPTIONAL)
{
    HANDLE ProcessId;
    //Безопасным образом извлекаем ProcessId
    if ((ULONG)ClientId > MmUserProbeAddress)//Проверяем что адресе ClientId находится ниже ядрерной памяти
        return STATUS_INVALID_PARAMETER;
    __try//Используем SEH, т.к. ClientId может указывать на непереданную память
    {
        ProcessId = ClientId->UniqueProcess;
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        DPRINT("Exception");
        return STATUS_INVALID_PARAMETER;
    }
    if ((ProtectedPid != 0)&&(ProcessId == ProtectedPid)) //защищаем процесс с указанным PID для нужного процесса
    {
        DPRINT("Access Denied!");
        return STATUS_ACCESS_DENIED;
    } else 
    return TrueNtOpenProcess(ProcessHandle, DesiredAccess, 
                             ObjectAttributes, ClientId);
}
NOP or XCHG EAX,EAX — what is the best?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.