3тьи "Упаковщики" когда же?

Тема в разделе "WASM.HEAP", создана пользователем EvilsInterrupt, 18 май 2006.

  1. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    что-то я с четвертой страницей прогнал, не ту ссыль гугль выдал
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Если говорить про обнаружение отладки через DebugApi, то можно еще перечислить хендлы через ZwQuerySystemInformation и искать среди них DebugObject. Можно узнать отлаживают ли нас через ZwQueryInformationProcess (получить DebugPort связаный с нашим процессом).

    Среди антиотладочных приемов в программах встречается даже такой (весьма некрасивый) метод, как установка фокуса контролу на окне, с последующей проверкой фокуса. При трассировке работе в отладчике, мы переключаемся на другое окно, а значит фокус контрола не устанавливается.



    Что касается различия полей PEB (таких как BeginDebugged, NtGlobalFlag) при отладке и без нее, то это проблема легко решается простым копированием части PEB из заведомо неотлаживаемого процесса :) Даже не нужно разбираться в том, как влияет отладчик на PEB.

    Все антиотладочные приемы связаные с измерением скорости исполнения кода, ловяться путем запрещения rdtsc и эмуляции этой команды драйвером.

    В общем, антиотладочные приемы в ринг3 очень сильно ограничены. Было бы интересно почитать про антиотладку в ринг0, там можно делать такие кошмарные замуты, что вся ринг3 антиотладка покажется детским лепетом :)
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ms Rem

    > "искать среди них DebugObject"

    > "не нужно разбираться в том, как влияет отладчик на PEB"

    И то и другое мы помнится "проходили по теме" На что влияет NtGlobalFlag ? Разобраться с BeingDebugged и NtGlobalFlag оказалось очень даже полезным, а вот вопрос о DebugObject как-то подвис в воздухе - неизвестно есть ли он в других осях акромя ХР (если есть, то под каким названием скрывается), да и использовать его как признак отладки как то недемократично по отношению к юзверю :))



    > "ловяться путем запрещения rdtsc"

    При запрете rdtsc нужно еще не забыть похучить QueryPerformanceCounter, на который ес-но эти запреты не действуют
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Кстати еще один камушек на дорожке запрета rdtsc - не забыть проверить число процессоров и или запрещать на всех или возиться с AffinityMask'ами. "Недоделанный" FakeRDTSC меня задолбал на P4 HT - то работает, то не работает, вроде "выключишь", а TSD сидит себе на другом процессоре и "просыпается" когда вздумается ;))
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    На этом упаковщики завершились?