Re[2]: NtQuerySystemInformation
От: st34m  
Дата: 09.11.09 13:29
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте

А>>Проблема следующая. Когда вызываю функцию, то возвращает во всех полях SYSTEM_PROCESS_INFORMATION число 3131961357.
А>>Причем параметр type приходит правильный, то есть 5. В чем может быть проблема? Код ниже:

AG>ntRet необходимо проверять, по его значению судить об ошибке.

AG>В type ничего не приходит, это ты его заполняешь.
AG>3131961357 это 0xBAADF00D, см здесь.
AG>Параметр SystemInformation должен указывать на структуру SYSTEM_PROCESS_INFORMATION, которую эта ф-ция будет заполнять, а SystemInformationLength содержать её размер.

nRet = 0, SystemInformationLenght = 32768, PVOID SystemInformation 0x00834678 (ессесно разный каждый раз))). Код ещё раз:

NTSTATUS NTAPI Hook_NtQuerySystemInformation(
    DWORD type,                    // тип информации
    PVOID SystemInformation,      // указатель на буфер
    ULONG SystemInformationLength, // размер буфера в байтах
    PULONG ReturnLength            // указатель на 32-битное число
    )
{
    SYSTEM_PROCESS_INFORMATION *pinfo, *pinfo_last;
    NTSTATUS ntRet;
    ntRet = /NtQuerySystemInformation((SYSTEM_INFORMATION_CLASS)(type), SystemInformation, SystemInformationLength, ReturnLength);
    // если получается информация о процессах 
    if(type == 5)
    {
        if(SystemInformationLength > 20000)
        {
            pinfo = (SYSTEM_PROCESS_INFORMATION*)SystemInformation;
            for(;;)
            {
    ...код...
            }
        }
    }
    return ERROR_SUCCESS;
}

в type приходит значение из системы. Это хук на функцию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.