Антидамп

Тема в разделе "WASM.HEAP", создана пользователем Rel, 31 дек 2020.

Статус темы:
Закрыта.
  1. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Информация из map файла используется только на этапе обработки оригинального бинарника. Так же применить виртуализацию/мутацию можно с помощью маркеров. В этом случае map файл не нужен.
     
    Последнее редактирование: 13 янв 2021
  2. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    не совсем так == вот что сии ребята пишут...
    для таких извратов без мапа НИКАК :)
     
  3. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Как информация в моем предыдущем сообщении противоречит тому что ты выделил? :derisive:

    В случае использования map файла и выбора функции VMProtect обрабатывает код выбранной функции.
    В случае использования маркеров VMProtect обрабатывает код между маркерами.
    Код (Text):
    1. VMP_IMPORT void VMP_API VMProtectBegin(const char *);
    2. VMP_IMPORT void VMP_API VMProtectBeginVirtualization(const char *);
    3. VMP_IMPORT void VMP_API VMProtectBeginMutation(const char *);
    4. VMP_IMPORT void VMP_API VMProtectBeginUltra(const char *);
    5. VMP_IMPORT void VMP_API VMProtectBeginVirtualizationLockByKey(const char *);
    6. VMP_IMPORT void VMP_API VMProtectBeginUltraLockByKey(const char *);
    7. VMP_IMPORT void VMP_API VMProtectEnd(void);
    map файл и маркеры - это способы указать VMProtect какой код нужно виртуализировать/мутировать.

    А то что при виртуализации кода VMProtect не декриптует его при запуске это очевидно. Сгенерированный p-code выполняется на виртуальной машине.
     
    Последнее редактирование: 13 янв 2021
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    ну-стоп.. написано же..
    как же без мапы обрабатывать ФАКтически разные байт-коды????? такой жути ни в одном эмуле нет :laugh1::laugh2::laugh3:
     
  5. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Твой выделенный кусок текста значит лишь то, что каждый раз когда ты применяешь защиту к бинарнику генерируется "уникальная VM" с "уникальним p-code" для кода выбранных функций и/или кода выделенного маркерами.

    Написано же что "for each protected file", а не "for each starting the protected binary".

    Если виртуализированный код вызывается из незащищенного кода - устанавливается jmp на код виртульной машины, если из виртуализированного кода - это учитывается в p-code.
     
    Последнее редактирование: 13 янв 2021
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    угу, и теперь Вопрос.. Ты, вот, как такую хрень реализовывал бы? :) для каждого "уникального" р-кода собирать "уникальный" бинарник вм иль всё же мапу? :grin: Другое дело, что мапа мб встроена в бинарник вм. короче, в любом случае мапа нужна транслятору в рантайме.
     
  7. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Ты сильно переоцениваешь значение map файла для защиты кода. VMProtect читает из map файла оффcеты начала функций и их названия. Все. На этом этапе польза от map файла заканчивается. Функции отображаются в утилите. Ты выбираешь тип защиты для выбранных функций. VMProtect определяет конец кода функции с помощью disasm и для этого кода генерирует "уникальный" p-code.
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    ну-и, как р-код транслируется на реальный проц?
     
  9. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    С помощью виртуальной машины.
     
    Ronin_ нравится это.
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    ну, это из разряда очевидного. а вот механизм трансляции == вот там-то возможны разные подходы. в нормальных эмулях р-код пересобирается в нативный. с вмп же остаются такие варианты..

    1. генерить таблицу трансляции команд в отдельный файл (мапу) и подгружать его по мере надобности.
    2. сращивать мапу с вм бинарником.
    =======
    №2 как бе позволяет лучше скрывать таблицы трансляций. Однако, по-любому эти таблицы в озу без шифров :grin:
     
  11. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    860
    Я не знаю как в данном протекторе. Как это видится мне, весь код функции сначала транслируется в p-код (тут тоже масса вариантов, в самом простом случае определенные последовательности инструкций транслируются в какой-либо опкод с параметрами). Данный список опкодов с параметрами сохраняется где-то внутри исполняемого файла. Первой инструкцией оригинальной функции ставится пролог с джампом на вм в котором передается в качестве параметра ссылка на данный список опкодов. А ВМ в самом простом случае читает опкод и воссоздает поведение последовательности команд для каждого опкода. В самом примитивном случае просто восстанавливает команды и делает туда JMP + JMP на обработчик следующего опкода после команд. В реальности тут масса вариантов к примеру замена регистров памятью + обфускация различная.
    Добавлю также что при таком подходе "хитрые" комбинации типа CALL @f: db xxxx :@@ для передачи данных в стеке когда данные и код перемешаны не будет работать.
     
    Ronin_ нравится это.
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    Thetrik, масса вариантов как раз-таки отваливаются, пч всё это безобразие должно пахать хотя бы со скоростями на уровне замшелого джава. к тому же, чуваки говорят о динамической генерации набора команд в компиль-тайме == защищённость от такого подхода в сущности не растёт, а вот профайл легко просаживается, пч р-команды всё таки должны быть дружелюбны к кэшу проца.
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    О хоспаде, как же хорошо, что у меня Убивитс в игноре стоит, еще один человек, как Инде, которому невозможно очевидную вещь объяснить. Надо больше не нажимать кнопку "показать игнорируемое содержимое".
     
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Rel, а мне приходится все читать по долгу службы.
    UbIvItS, вы спорите сами с собой, не замечали?
     
    Ronin_ нравится это.
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    UbIvItS,

    Среди множества приложений которые разбирались на кл и накрыты вмп, вирта была бинарей, не сурков(мапов и тп), поэтому и покрытие было низким ~5 в лучшем случае 10% кода апп. Единственный модуль который я видел был с полным покрытием, это был драйвер античита. Как я и говорил выше, обычно алгоритмы не нужно девиртить, они вовсе не нужны, а нужна лишь выборка в память(в частности к данным). Она не меняется ни после морфа ни после вирты, так как это один и тот же морф, а авторы этих поделок не понимают это зачем нужна выборка.
     
  17. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    Это только если срякмисы, накрытые вмпротом ломать. В реальном софте тебе придут 2кб криптованных данных с сервера, произойдет их "выборка" в память, а затем виртуализированные функции начнут это декриптовать, парсить и анализировать. Хз, чем тебе тут визор поможет.
     
  18. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    rmn,

    И при этой всей обработке описанной вирта будет участвовать в 5% от всей. Ты же знатный был троль на кл, видел как это всё решалось. Обычный софт накрытый вмп никогда не был проблемой.
     
  19. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    разворачивать вмп -- это больше академическая задача, пч на практике этот изврат бьёт именно по легальным юзверям, именно они страдают от тормозов да глючной падучести этого дерьмища :) и, да == ты прав про выборку == можно вполне автоматизировать сборку искомого бин-а из работы вмп.
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    вот тут я с вами полностью согласен
     
Статус темы:
Закрыта.