Anti-attach

Тема в разделе "WASM.WIN32", создана пользователем float, 14 июн 2011.

  1. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    Вопрос снова по поводу анти-аттача. Подумал сделать перехват создания потока не в LdrInitializeThunk, а в BaseThreadInitThunk, но в ХР он не экспортируется (если вообще есть). Как нибудь его можно найти надежным образом? желательно кросс-виндовым
     
  2. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    http://wasm.ru/forum/viewtopic.php?id=41257

    Есть BaseThreadStartThunk() - стаб, вызываемый после завершения стартап апк и дёргает DbgUiRemoteBreakin(), которая генерит брейк.

    И вообще не нужно ничего перехватывать, будет вызван загрузочный вход модулей в контексте удалённого потока.
     
  3. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    ну да, я перепутал. имел в виду её.

    можно подробнее? не очень понял
     
  4. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    "DllMain".
     
  5. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    инфа 100%? т.е. вызовется DLL_THREAD_ATTACH? до выполнения удаленного потока? в контексте нового потока?
     
  6. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Это обычный поток. Тотже поток создаётся из csrss для UserpActivateDebugger. Скрываются от отладчика только потоки, получающие слепки(RtlQueryProcessDebugInformation()), там вызов ThreadHideFromDebugger. События в таком потоке не доставляются отладчику, но это не имеет отношения к стартап апк - длл будет вызвана.
     
  7. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    все круто, но опять проблемы с wow64. В dll_thread_attach я прописал ZwRemoveProcessDebug. В хр Sp3 все срабатывает как надо, на windows 7 x64 - как будто процесс стопится до выполнения dll_thread_attach.
     
  8. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    вот еще вопрос - в функции DbgUiRemoteBreakin после проверки BeingDebugged идет сравнение 2го бита какого-то значения. Насколько я помню - в NtGlobalFlag 2-ой бит показывает что процесс под отладкой, но по моему, это не он. Что это за значение? в исходнике ReactOS такой проверки нет.
    http://gyazo.com/18d73204529f053fc02f32bb353a363d.png
     
  9. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
  10. float

    float New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    113
    кто-то мне говорил, что Shared User Data нельзя из юзермода изменять и что она общая для всех процессов. Так ли это? и если нельзя просто так, как можно изменить ее?

    p.s. на хр сп3 х86 и win7 x64 этот адрес одинаковый. можно ли полагать что на всех хп сп0 и выше он будет таким же, включая 64-битные версии?
     
  11. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    float
    USD это фиксированная структура, в описании её есть чёткий комент:
    Изменяется из ядра:
    Код (Text):
    1. #define KI_USER_SHARED_DATA         0xffdf0000
    - страница отображена на юзермод.

    Зачем вам это не понятно.