ошабка в драйвере Bad_Pool_Caller

Тема в разделе "WASM.NT.KERNEL", создана пользователем axe_roma, 23 авг 2010.

  1. axe_roma

    axe_roma New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2004
    Сообщения:
    93
    Адрес:
    Russia
    Изучаю написание драйверов по докам от Four-F а точнее http://www.wasm.ru/article.php?article=drvw2k09 Разделяемая память, драйвер переписываю на C, уже вроде все проверил а при отправке управляющего кода драйверу - синий экран с ошибкой BAD_POOL_CALLER судя по описанию попытка освободить пользовательский адрес для ядра. Ткните пальцем а то вообще не могу понять где я ошибся
     
  2. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    Регистрация:
    8 янв 2008
    Сообщения:
    71
    Адрес:
    Украина
    выложи минидамп
     
  3. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Тоже сейчас ставлю эксперементы с выделением памяти, дабы на создавать лишнюю тему раскажу о своей проблеме -
    вылазает синий экран с ошибкой BAD_POOL_HEADER

    Выделяю память, читаю, освобождаю память
    Код (Text):
    1. p = (PCHAR)ExAllocatePoolWithTag(PagedPool, uSize + 1, 'tag1');
    2. // здесь читаю из файла в p - все нормально читается и выводится
    3. ReadDataFromFile(FileName.Buffer, p);
    4. DbgPrint("%s", p);
    5. ExFreePoolWithTag((PCHAR)p, 'tag1'); // BSOD BAD_POOL_HEADER
    mindump=
    Код (Text):
    1. Mini082310-08.dmp   23.08.2010 17:34:47 BAD_POOL_HEADER 0x00000019  0x00000020  0xe1f096b0  0xe1f096c0  0x0c020201  poolmanager1.sys    poolmanager1.sys+18c6                   32-bit      C:\WINDOWS\minidump\Mini082310-08.dmp   1   15  2600
    Где я не прав?
     
  4. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    Регистрация:
    8 янв 2008
    Сообщения:
    71
    Адрес:
    Украина
    JCronuz
    проблема в этой функции ReadDataFromFile(FileName.Buffer, p); так как больше негде
    запустите verifier.exe, это вас приблизит к нахождению проблемы
     
  5. axe_roma

    axe_roma New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2004
    Сообщения:
    93
    Адрес:
    Russia
    Минидамп прилагаю
     
  6. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    Регистрация:
    8 янв 2008
    Сообщения:
    71
    Адрес:
    Украина
    у вас либо проблемы с ОЗУ, либо какой то код модифицировал ntoskrnl.exe
    - для начала замените ntoskrnl.exe из дистрибутива
    - проверьте ОЗУ
    - запустите verifier.exe, и если будет падать вылаживайте новый минидамп
     
  7. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Bazhan Спасибо за ответ, функция ReadDataFromFile ничего сверхъестественного нет
     
  8. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    Регистрация:
    8 янв 2008
    Сообщения:
    71
    Адрес:
    Украина
    JCronuz
    как вы думаете что произойдет если uSize + 1 будет меньше ufSize?

    p = (PCHAR)ExAllocatePoolWithTag(PagedPool, uSize + 1, 'tag1');

    ufSize = ZwGetFileSize(hFile);
    ntStatus = ZwReadFile(hFile, NULL, NULL, NULL, &ioSB, p, ufSize, NULL, NULL)
     
  9. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Все большое спасибо Bazhan
     
  10. axe_roma

    axe_roma New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2004
    Сообщения:
    93
    Адрес:
    Russia
    Почему тогда оригинальный драйвер нормально работает, дело явно в коде моем
     
  11. Bazhan

    Bazhan Андрей

    Публикаций:
    0
    Регистрация:
    8 янв 2008
    Сообщения:
    71
    Адрес:
    Украина
    значит запускай verifier.exe для нахождения ошибки,
    либо отладчик в руки
    по твоему дампу ничего выявить невозможно