Зачем нужны протекторы ?

Тема в разделе "WASM.SOFTWARE", создана пользователем Clerk, 15 авг 2009.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Прнивет всем. Прочитал тут одну тему и подумал. Большая часть софта накрыта протекторами и все стремяться их снять, распаковав модуль(дамп, восстановление импорта и пр.), так вот зачем это вобще нужно ??
    Цепляем к модулю свой загрузчик, в редких случаях даже ядерный, как только поток начнёт выполнять модуль этот загрузчик получит управление, выполнит сокрытие себя, необходимые перехваты для последующего контроля кода и пр., после чего передаст управление на оеп для запуска анпакера в этом модуле, который всё нужную работу выполнит сам. Например можно весь анпакер протрассировать. Реализуется всё это предельно просто. Так для чего нужна распаковка, если учесть что анпакер это часть защищенного модуля ?
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Clerk
    +1 или вовсе навесная долепка.
     
  3. TSS

    TSS New Member

    Публикаций:
    0
    В случае простейших протекторов да, всякие generic unpacker'ы примерно так и работают, а в случае виртуализированного кода логику в каждом конкретном случае все равно придется изучать вручную. Ну точнее не совсем вручную, но выход полученный от трассировщика так или иначе придется обрабатывать дополнительными тулзами, оптимизируя граф выполнения (избавляясь от ложных веток, и т.д.).
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    TSS
    Какой есчо граф. Если должна быть выполнена загрузка модуля, то LdrLoadDll() будет полюбому вызван. Мутируйте/виртуализируйте как угодно - всёравно тред будет с ядром и системными модулями общаться, ядерные входы и калбэки не проэмулируешь.
     
  5. TSS

    TSS New Member

    Публикаций:
    0
    Обыкновенный. Протекторы навешивают чтобы защитить свой продукт, часть кода может быть защищена виртуальной машиной, к примеру ф-я генерации рег. номера, и чтобы понять его логику и написать кейген придется разбирать весь код, в котором может и не оказаться общения с ядром.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Clerk
    А как ты будешь контролировать зашифрованную прогу(патчить?). К тому же ещё нужно понять что патчить.

    Да просто, если знаешь все антиотладочные трюки.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Виртуализация редко применяется, обычно запустил и распаковывается.
    Booster
    Я к примеру сказал, трассировате его незачем. А антиотладка - я знаю все существующие приёмы, все альтернативные сам предложил.
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    к тому же кто мешает вместо отладки отслеживать все на исполняемую страницу или в стек. да это сильно замедлит программу но окончание распаковки можно будет опознать и сделать слепок чистой программы.
     
  9. max7C4

    max7C4 New Member

    Публикаций:
    0
    все операции записи на исполняемую страницу
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Clerk
    Мы же контролируем не сферического коня в вакууме. Прежде чем что-то прицепить, нужно понять для чего. Против тебя действительно любые антиотладочные приёмы бесполезны, но думаю защита не конкретно AntiClerk.
     
  11. o14189

    o14189 New Member

    Публикаций:
    0
    нужен он чтоб денег заработать конечно
    ради интереса часть жизни этим заниматься, указывает только на то,
    что либо у человека очень много свободного времени, либо денег
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Clerk
    я не понял как это поможет мне реверсировать защищаемый модуль, чтобы восстановить алгоритм его работы и изменить этот алгоритм (наставить перехваты в нужных местах). я знаю только 1 метод - сдампить распаковавшийся код и восстановить импорты, впрочем это не помогает от ВМ

    и какова скорость трассировки?
    есть подозрение что это займет нереальное количество времени, при том что прога под протом доходит до OEP за единицы секунд
     
  13. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Хватит бурлить =) доктор таки распакует ... а для эмулей упаковщики и нужны
    вот ответ !
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    GoldFinch
    Если трассируется юзермодный код и если трассировщик ядерный выполнен надлежащим образом, то трассировка абсолютно никак не скажется на быстродействии - поверено. Причина этого - код выполняющийся на PASSIVE_LEVEL на довольно длительные промежутки времени замораживается, принудительно отдовая свои кванты другим потокам. Изза этого трассировка незаметна. Существует множество других препятствий, изза которых полноценная трассировка на ядре NT невозможна.
    Этот вопрос предполагает что вы не знакомы и не имеете опыта в распаковке/реверсинге. После отработки анпакера в памяти модуль распакованный. Далее с ним делайте что угодно, суть в том, чтобы после отработки анпакера управление получил наш код(перехватчик). Для его инициализации и нужен лоадер.
    Слепки делать незачем, в том и вопрос топика. Нет смысла выполнять распаковку и отделять анпакер от тела основной программы. Например я вручную часто использую такой приём - установка хардварного бряка на стек ниже на несколько сотен байт от текущего. Так как защита всегда примитивна и стек никогда не переключается то точка останова срабатывает. Но смысл не в этом. После передачи управления тредом на анпакер и его отработки в памяти оказывается оригинальный образ, для чего тогда нужен пакер.
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Вопрос приводит к разделению - всякая защита, которая после отработки восстанавливает в памяти образ не может называться защитой. Наверное o14189 прав. Единственное чего не пойму - для чего абсолютно все имеют целью распаковку модуля, что давно перенесено в приват, если задача имеет простое решение - загрузчик прикреплённый к целевому модулю.
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Clerk
    Виртуальная машина это цельная распаковка?
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Booster
    Да. Но это довольно редко применяется, практически весь софт накрыт самораспаковывающимися протекторами.
     
  18. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Clerk
    Хм, я конечно не профессионал, но разве так сложно написать защиту, которая распаковывала бы код не один раз в самом начале, а кусками по мере надобности? Почему-то я полагал, что так многие и поступают. Таким образом в любой момент времени значительная часть кода в памяти лежит зашифрованной.
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Stiver
    Минус производительность. Виртуальная машина здесь предпочтительнее.
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Stiver
    Это только теория, ни легальный софт ни малвара по большей части это не использяет, довольно редко.