Debug bits в Win32

Тема в разделе "WASM.WIN32", создана пользователем _Poly_Glot_, 8 дек 2007.

  1. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Здрасьте все.
    Я сегодня вроде разобрался с функцией IsDebuggerPresent, а вот про антиотладку при помощи NtGlobalFlag вообще информации нету. Посмотрите, что нарыл на NtGlobalFlag и как понял IsDebuggerPresent, если вдруг чё неправильно, пните в нужную сторону, ну и насчёт NtGlobalFlag дайте плз покурить:

    IsDebuggerPresent:
    функция состоит из 3 строк:

    Код (Text):
    1. MOV EAX,DWORD PTR FS:[18]
    2. MOV EAX,DWORD PTR DS:[EAX+30]
    3. MOVZX EAX,BYTE PTR DS:[EAX+2]
    Регистр FS указывает на Thread Environment Block (TEB), по смещению fs:[18] лежит указатель на этот же TEB (то есть то же самое, что и в fs), по смещению 30h в TEB лежит указатель на PEB, и тут смотрят на [peb+2] и если прога отлаживается отладчиком 3 кольца, то в [peb+2] лежит 1, если отладки нет - лежит 0. А эту единицу устанавливает CreateProcess из-за переданного отладчиком параметра DEBUG_PROCESS и если стоя на EP (ну или если юзается TLS на первой команде) обнулить [peb+2] то таким образом нас уже не запалить, чем и пользуются плагины к оле.
    Про IsDebuggerPresent я правильно понял?


    NtGlobalFlag:
    Вот что я по нему нарыл:
    NtGlobalFlag расположен в PEB по смещению 68h, Это dword. Когда мы не под отладчиком - NtGlobalFlag = 0, когда мы отлаживаем приложение, NtGlobalFlag = 70h. При чём тут реестр я так и не понял (в хелпе к плагину "Olly advanced" что-то написано про реестр), и почему в Olly Advanced'e не рекоммендуется использовать NtGlobalFlag, я тоже не понял. И последнее, что я не понял - кто и почему выставляет этот байт? В случае с IsDebuggerPresent тут выставляет ф-ция CreateProcess из-за параметра, а тут кто и почему?

    P.S. Если есть, дайте плз почитать/покурить/поучить что-нибудь про антиотладку с помощью Heapflags и Forceflags (желательно на русском)
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    поиск по форуму пробовали?
     
  3. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Asterix, по форуму поискал, самое стоящее что я нашёл - это http://www.wasm.ru/forum/viewtopic.php?id=10118, но это слишком сложно для мну. =(
    Я же не прошу чего-то съверхестестьеного, просто дайте мне "пинок под зад" в нужную сторону.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    не совсем. база FS указывает на начало NT_TIB. а в нем поле Self указывает уже на полноценный TEB, как я помню.
    в остальном - да.
     
  5. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    _Poly_Glot_
    Про IsDebuggerPresent более развернутое обсуждение вы найдете в статье про упаковщики от Volodya и NEOX. Там все очень приятно нарисованно и изложенно. Про NtGlobalFlag сейчас нетути сил. Как-нибудь в другой раз ну или меня кто-нить поддержит отседова.
     
  6. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Mental_Mirror, сэкнс, имеешь ввиду две части "Об упаковщиках в последний раз"?
    Если да, завтра покурю обязательно
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    _Poly_Glot_
    Да, да именно!
     
  8. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    OK.
    может, завтра, если сегодня никто не поможет?
     
  9. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Ды Great вот тоже под наркотиками как и я. Завтра да, может.
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    так. мы с Mental_Mirror пожалуй спать )
     
  11. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Great, а я сколько трейсил у мну FS всегда был равен FS:[18] ???

    Ребята, завтра уже настало... =) =) =)
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ммм.. я не проверял но так было написано гдето, где я читал об этом в первый раз )
     
  13. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Great, вот смотри:

    "На Intel Win32 платформе, регистр FS всегда указывает на текущий TIB." Это цитата из
    http://www.wasm.ru/article.php?article=Win32SEHPietrek1

    "Структура TIB существует и в Windows NT+ и называется _NT_TIB (полностью документирована в winnt.h), а структура TEB (недокументирована) включает в себя структуру TIB". А это цитата из http://www.wasm.ru/article.php?article=packers2

    Ты по ходу перепутал TEB и TIB. Наверное.


    Всё, я по ходу понял.
    Приведу цитату из упаковщиков части 2:
    Но fs:[18] равен fs и получается, что fs указывает и на начало структуры TEB и на начало структуры NT_TIB, так как NT_TIB входит в TEB.

    Ты написал:
    а начало NT_TIB как раз и есть начало полноценного TEB

    Ну и напоследок картинку для общего понимания: http://www.wasm.ru/pub/23/pic/TEB.gif
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    _Poly_Glot_
    не, Я ничего не путал, я написал как было написано в этой статье.. вроде)
     
  15. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Great, прочитай упаковщики, я ж тут даже картинку дал. (и, если окажется, что всё-таки не понял я, наставь мну на путь истинный =)

    Ну ладно, это не главное, я вообще тему создал с основной целью - понять каким макаром NtGlobalFlag относится к антиотладке, ну и если кому не в лом, расскажите ещё о Heapflags и Forceflags.
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    _Poly_Glot_
    я читал не один раз, спасибо)

    насчет указателей я и правда напутал, с кем не бывает. но TIB & TEB между собой я не путал, Как ты сказал.
    короче проехали
     
  17. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    йа конешн можт дурак но у меня fs=3bh, fs:[18h]=7FFDD000.. сталобыть fs=3bh на TIB не особо указывает, в отличии от fs:[18h]=7FFDD000... 3b - селектор, который содержет номер дескриптора. а вот база сегмента, который описываецо данным дескриптором какраз йавляецо линейным адресом NT_TIB. кроме того этот адрес лежит по смещению 18h относительно базы fs (NT_TIB.Self)
     
  18. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Freeman
    Это не моя фраза, это цитата из http://www.wasm.ru/article.php?article=Win32SEHPietrek1
    У мну тоже если в оле набрать "? fs", тоже показывает 3bh, просто я ничё не знаю про селекторы, в общем я имел ввиду не fs, а "база сегмента, который описываецо данным дескриптором"
    Спасибо за то, что указал ошибку...
     
  19. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    команду отладчика dt не пробовали?
    Freeman
    ну ясно дело что селектор не может быть указателем :)
    кстати не всегда а только в юзере :P
     
  20. _Poly_Glot_

    _Poly_Glot_ [poly] glot

    Публикаций:
    0
    Регистрация:
    25 июл 2007
    Сообщения:
    44
    Адрес:
    Санкт-Петербург
    Ой, у мну тока Оля, а тут в command bar'e такой команды нет.

    Хм, ты хочешь сказать, что под админом, проги, использующие регистр fs будут работать по другому?

    P.S. Народ, расскажите плз про NtGlobalFlag...