Признаки отладчика

Тема в разделе "WASM.WIN32", создана пользователем Wolfgang, 16 авг 2005.

  1. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    Как выяснил, существует три флажка - признака того, что поток отлаживается. Один - в TEB (точнее, там указатель на этот флажок), это PEB.BeingDebugged. Еще два уже в нулевом кольце, это KPCR.ActiveDebug и KTHREAD.ActiveDebug. Основной вопрос (чтобы ответить самому, нужно перелопатить ядро) - зачем их три? На моей системе у процесса Winlogon.exe выставлен флаг KTHREAD.ActiveDebug, хотя никто его не отлаживает! Почему? Кроме того, при этом выставленном флаге менеджер сервисов (который Int 2E) при выполнении какой-то функции Winlogon'ом сбрасывает отладочные регистры DRx. Есть ли этому какое-то разумное объяснение???
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




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



    [​IMG]



    Проверь с gflags.exe (или где-то в реестре) сменить значение [debug WINLOGON] (по умолчанию отключено)
     
  3. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    У меня в ХР эта утилита показывает, что все флажки сброшены... это нормально? не похоже на правду
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Это нормально, хотелось проверить (сайс у меня не стоит) , есть ли связь KTHREAD.ActiveDebug у WINLOGON с флагом [debug WINLOGON]
     
  5. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    сайса у меня тоже нет, но я из драйвера это определил, что у Винлогона поле KTHREAD.ActiveDebug равно 1, хотя флажок и не выставлен.
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
  7. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    солгал, не 1 там, а 8F, при чем и в KTHREAD.ActiveDebug и в KPCR.ActiveDebug. Выставил флажок - система не грузится, Винлогон при запуске выдает синий экран... сейчас буду систему переустанавливать :dntknw:
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    ого :dntknw: выбери последнюю удачную конфигурацию или под NTFS есть утилиты перезаписать из winnt\repair файл system в каталог system32\config или recovery console вернуть значение реестра



    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager]

    "GlobalFlag"=dword:00000000
     
  9. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Можно попробовать из под ДОС ручками изменить файл system, "GlobalFlag"=dword:04000000 на "GlobalFlag"=dword:00000000
    Код (Text):
    1. до
    2. 0001A810 45 78 63 6C 75 64 65 46 72 6F 6D 4B 6E 6F 77 6E ExcludeFromKnown
    3. 0001A820 44 6C 6C 73 00 00 00 00 D8 FF FF FF 76 6B 0A 00 Dlls........vk..
    4. 0001A830 04 00 00 80 [b]00 00 00 04 [/b]04 00 00 00 01 00 00 00 ................
    5. 0001A840 47 6C 6F 62 61 6C 46 6C 61 67 00 00 00 00 00 00 GlobalFlag......
    6. 0001A850 C8 FF FF FF 76 6B 1E 00 04 00 00 80 00 00 00 00 ....vk..........
    7. 0001A860 04 00 00 00 01 00 00 00 48 65 61 70 44 65 43 6F ........HeapDeCo
    8. 0001A870 6D 6D 69 74 46 72 65 65 42 6C 6F 63 6B 54 68 72 mmitFreeBlockThr
    9. после
    10. 0001A810 45 78 63 6C 75 64 65 46 72 6F 6D 4B 6E 6F 77 6E ExcludeFromKnown
    11. 0001A820 44 6C 6C 73 00 00 00 00 D8 FF FF FF 76 6B 0A 00 Dlls........vk..
    12. 0001A830 04 00 00 80 [b]00 00 00 00[/b] 04 00 00 00 01 00 00 00 ................
    13. 0001A840 47 6C 6F 62 61 6C 46 6C 61 67 00 00 00 00 00 00 GlobalFlag......
    14. 0001A850 C8 FF FF FF 76 6B 1E 00 04 00 00 80 00 00 00 00 ....vk..........
    15. 0001A860 04 00 00 00 01 00 00 00 48 65 61 70 44 65 43 6F ........HeapDeCo
    16. 0001A870 6D 6D 69 74 46 72 65 65 42 6C 6F 63 6B 54 68 72 mmitFreeBlockThr
     
  10. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    Ура!!! Сработало! Правда, у меня в ХР по другому смещению флажок хранился, но главное - сработало! Странно, что у файла реестра нет контрольной суммы :) Но с флажком однозначно не получается, придется искать машину с win2000.

    Спасибо за мысль исправить реестр ручками!