защита процесса от самого себя

Тема в разделе "WASM.WIN32", создана пользователем gloomyraven, 11 мар 2009.

  1. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Вопрос в следующем:
    есть некое приложение, я в него делаю dll inject и перехватываю API.
    Как можно защитить свою dll от дампа данным процессом, обнаружения, снятия хуков и т.д.
    Приложение запускается с минимальными правами (от имени пользователя).
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    На понял, который процесс нужно защищать сам от себя, и, главное, зачем?
    Что такое дамп DLL данным процессом?
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    похерить РЕ в памяти и информацию о дллке в ПЕБ, ну и не забыть сделать так, чтобы заголовок РЕ на диске был неприменим к заголовку в памяти (ну например свой упаковщик навесить сверху).
    или ставить хуки в цикле, или отслеживать активность процесса в данном направлении

    но что-то мне подсказывает, что ТС имеет ввиду что-то свое и магическое под словами "дамп" и прочими, а не их нормальные значения
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Вот и у меня сложилось такое впечатление.
     
  5. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Partner
    MSoft
    Ну как же магическое?
    Есть некое клиентское приложение, не буду вилять попой - покерный клиент :)
    Я его запускаю с приаттаченной dll, перехватываю нужные ф-ии.
    Давно не секрет, что покерные клиенты шуршат по компьютеру, это частично решается запуском его от имени пользователя.
    Но вот как быть с защитой своей библиотеки, чтобы клиент ее не заметил в своем адресном пространстве, не спалил, что мы функции перехватили, да еще чтобы код библиотеки не сдампил и не отправил на сервак (что будет очень печально).
    Часть проблем решается путем навешивания на dll прота (скажем последнего ASProtect), но при желании он снимется за час :dntknw:
     
  6. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    gloomyraven длл не загружать, а просто выделять память под код и работать там. Куски памяти защищать из дровины.
     
  7. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    asd
    Не совсем понял, точнее совсем не понял...
    Где память под код выделять? В памяти клиента?

    В принципе, можно просто приатачить dll, защитить критичные области от чтения/записи (сделать досту только для выполнения), но тогда как сама dll будет работать? Никак?
     
  8. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    И можно ли БЕЗ драйвера, потому что это уже немного другая тема?
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    да, в памяти клиента. Т.е. ты не вызываешь LoadLibrary, а руками настраиваешь в памяти секции, релоки и импорты. Не знаю правда, как это отразится на работоспособности твоей длл, т.к. там могут быть свои тараканы. И обязательно затирай заголовок РЕ, чтобы клиент не знал размер и адрес образа
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Насколько я помню, когда я так делал нное число лет назад, все работало чудесно без подводных камней. Ну, естественно, стандартные функции работы с модулями работать не будут.
     
  11. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    gloomyraven
    Если без драйвера можно что-то вроде копимема, ключи для расшифровки получать из другого приложения, тогда дамп не особо поможет.
     
  12. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Great
    MSoft
    Я использую Detour в качестве механизма встраивания/перехвата.
    detour просто загружает процесс с приатаченной dll, заголовки PE затереть не проблема, а вот с остальным извратом будут проблемы, думаю... detour использую из-за его простоты и неотказной(пока) работы.
    Но хочется и рыбку съесть и ... :)
    Может на его помощью можно что-либо сворганить?
     
  13. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Моно еще во время DLL_PROCESS_ATTACH убрать из ldr инфу о своей либе вот так:
    Код (Text):
    1.        assume fs:nothing
    2.        mov eax,fs:30h
    3.        mov eax,[eax+0Ch]
    4.        mov ecx,hInstDLL
    5.        add eax,0Ch
    6.     @@:
    7.        mov eax,[eax]
    8.        cmp ecx,[eax+18h]
    9.        jnz @B
    10.        mov ecx,[eax]
    11.        mov ebx,[eax+4]
    12.        mov [ebx],ecx
    13.        mov ecx,[eax+4]
    14.        mov ebx,[eax]
    15.        mov [ebx+4],ecx
    16.        lea eax,[eax+8]
    17.        mov ecx,[eax]
    18.        mov ebx,[eax+4]
    19.        mov [ebx],ecx
    20.        mov ecx,[eax+4]
    21.        mov ebx,[eax]
    22.        mov [ebx+4],ecx
     
  14. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    неиспользуемый код шифровать. декриптор держать в отдельном от всего образа куске памяти.
     
  15. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    вот вот, ресурсы тоже - поэтому тут все зависит от специфики работы софта
    некоторые дамперы (да к примеру та же олька) могут брать заголовок с диска.
     
  16. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Flasher
    Вот это гут, спасибо :)

    Freeman
    Дикриптор тогда придется засовывать в ядро :dntknw:

    MSoft
    можно перекрыть доступ процесса к файлам, например перехватив в нем данные функции
     
  17. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    А что получит процесс от dll, если в ней не будет PE заголовка и ldr инфы?
     
  18. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    А с помощью ACLов это нельзя сделать? В detour`е есть секурити аттрибуты при создании процесса с приатаченной dll, или это не то?
     
  19. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    дык тут же вроде вопрос - что получит длл от процесса? :)
     
  20. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Freeman
    хм... вроде как раз наоборот :) надо dll защитить :) от процесса