Переполнение стека после хуков

Тема в разделе "WASM.NT.KERNEL", создана пользователем 0x56, 7 фев 2008.

  1. 0x56

    0x56 New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2008
    Сообщения:
    63
    Исходные данные:
    Драйвер устанавливающий SDT хуки на функции работы с файлами во время инициализации Windows

    Результат:
    Постоянное падение системы, переполнение стека некоторого потока процесса csrss.exe.

    Не могу понять почему так происходит, ведь функции-подмены прекрасно работают при установке хуков после загрузки Windows?

    Код (Text):
    1. UNEXPECTED_KERNEL_MODE_TRAP_M (1000007f)
    2. BUGCHECK_STR:  0x7f_8
    3. CUSTOMER_CRASH_COUNT:  1
    4. DEFAULT_BUCKET_ID:  DRIVER_FAULT
    5. PROCESS_NAME:  csrss.exe
    6. IRP_ADDRESS:  d6f9dfc0
    7. LAST_CONTROL_TRANSFER:  from 805065f5 to 80506681
    8.  
    9. 1: kd> !thread
    10. GetPointerFromAddress: unable to read from 80568eb4
    11. THREAD 851c2868  Cid 03f8.03fc  Teb: 7ffdd000 Win32Thread: e2adb228 RUNNING on processor 1
    12. IRP List:
    13.     Unable to read nt!_IRP @ 870f2c90
    14. Not impersonating
    15. GetUlongFromAddress: unable to read from 8055f544
    16. Owning Process            851c2020       Image:         csrss.exe
    17. ffdf0000: Unable to get shared data
    18. Wait Start TickCount      2528        
    19. Context Switch Count      48                 LargeStack
    20. ReadMemory error: Cannot get nt!KeMaximumIncrement value.
    21. UserTime                  00:00:00.000
    22. KernelTime                00:00:00.000
    23. Start Address 0x4a6811a3
    24. Stack Init f793c000 Current f7939aa4 Base f793c000 Limit f7939000 Call 0
    25. Priority 13 BasePriority 13 PriorityDecrement 0 DecrementCount 0
    26. ChildEBP RetAddr  Args to Child              
    27. f7939000 805065f5 86fd8000 000017e8 8721836c nt!MmCheckCachedPageState+0x9f (FPO: [Non-Fpo])
    28. f7939034 804ecf9c 872182c0 0241e000 00000000 nt!CcPfTraceTimerRoutine+0x4a (FPO: [Non-Fpo])
    29. f7939074 804f32de d6f9e000 00000000 f79391a0 nt!IopCompleteRequest+0x5c (FPO: [Non-Fpo])
    30. f79390bc 804f3003 87218168 f79390fc 00001000 nt!MmCreateSection+0x22e (FPO: [Non-Fpo])
    31. f7939150 8057395e 872182c0 f7939190 00001000 nt!MiCheckPurgeAndUpMapCount+0xd8 (FPO: [Non-Fpo])
    32. f79391c4 f747baf3 872182c0 f7939204 00001000 nt!MiMapViewOfDataSection+0x2b4 (FPO: [Non-Fpo])
    33. f7939244 f747bc51 e1b45688 e1018868 00000068 Ntfs!LfsGetLbcb+0x5b (FPO: [Non-Fpo])
    34. f7939258 f747b8d2 e1b45688 00000060 e1018868 Ntfs!LfsPrepareLfcbForLogRecord+0x4a (FPO: [Non-Fpo])
    35. f7939288 f747b606 e1b45688 e1018868 00000003 Ntfs!LfsWriteLogRecordIntoLogPage+0x5c (FPO: [Non-Fpo])
    36. f7939364 f747b12f e1018868 00000003 f7939424 Ntfs!LfsWrite+0x2f7 (FPO: [Non-Fpo])
    37. f79394e8 f74850b6 f7939ee4 872b74e8 86daa4f8 Ntfs!NtfsWriteLog+0x6a2 (FPO: [Non-Fpo])
    38. f79395d0 f748a7a7 f7939ee4 e2acdd90 e2acddb0 Ntfs!NtfsWriteFileSizes+0x29f (FPO: [Non-Fpo])
    39. f79397ac f74b64e9 f7939ee4 e2acdd90 f793983c Ntfs!NtfsAddAttributeAllocation+0x2b8 (FPO: [Non-Fpo])
    40. f79398a8 f748b742 f7939ee4 e2acdd90 000000a4 Ntfs!NtfsDeleteAllocationInternal+0x59c (FPO: [Non-Fpo])
    41. f793991c f746a47a f7939ee4 86daa5b0 ffffffff Ntfs!NtfsDeleteAllocation+0x302 (FPO: [Non-Fpo])
    42. f7939af0 f745acf6 f7939ee4 86c2bc90 e2acdd90 Ntfs!NtfsPrepareBuffers+0x1047 (FPO: [Non-Fpo])
    43. f7939cd8 f745bae9 f7939ee4 86c2bc90 e2acdd90 Ntfs!NtfsNonCachedIo+0x20e (FPO: [Non-Fpo])
    44. f7939ed4 f745bc97 f7939ee4 86c2bc90 0110070a Ntfs!NtfsCommonWrite+0x1949 (FPO: [Non-Fpo])
    45. f793a048 804e19ee 872bb770 86c2bc90 8721ee20 Ntfs!NtfsFsdWrite+0xf3 (FPO: [Non-Fpo])
    46. f793a048 0001bd3c 872bb770 86c2bc90 8721ee20 nt!KiTrap0D+0x1c3 (FPO: [0,0] TrapFrame @ f793a068)
    47. WARNING: Frame IP not in any known module. Following frames may be wrong.
    48. 00010000 00000000 00000000 00000000 00000000 0x1bd3c
    49.  
    50. 1: kd> r
    51. eax=f7939024 ebx=8721836c ecx=872182c0 edx=8729e00f esi=8729e008 edi=00000000
    52. eip=80506681 esp=f7939000 ebp=f7939000 iopl=3         nv up ei pl nz na po nc
    53. cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00013202
    54. nt!MmCheckCachedPageState+0x9f:
    55. 80506681 51              push    ecx
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Какие функции хукаешь ? Может дело не в SDT.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Наверно падает потому, что код драйвера выполняется на слишком ранней стадии инициализации системы.
     
  4. Denwer

    Denwer New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    104
    Хукать SSDT функции для работы с файлами - 100 процентный изврат. Проще и быстрее написать фильтр файловой системы, надежность в разы лучше, да и возможностей больше.
     
  5. 0x56

    0x56 New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2008
    Сообщения:
    63
    Clerk
    NtOpenFile, NtCreateFile etc
    Да вроде ничего особенного в коде, система нативная уже к тому времени работает
    Самое интересное не могу полный дамп сделать и на виртуалке не падает
    Надо 2-й комп покупать :)
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Попробуй запустить драйвер без изменения SDT