кто-нибудь ломал VMProtect

Тема в разделе "WASM.RESEARCH", создана пользователем avraam, 27 апр 2009.

  1. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    то есть вы игнорируете multi-threading да!? ~;
     
  2. Vam

    Vam New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2008
    Сообщения:
    149
    Да.
    Тогда что это за защита, которая обладает всеми известными свойствами VMProtect и аналогичной реализацией?
    А экзешник то зачем? Есть хешированный пикод исполняемый неким экземпляром виртуальной машины, эмулирующий защищаемую функцию или её часть, а само тело функции забито "мусором".
    Лог показывает выполнение расхешированного пикода виртуальной машиной.
     
  3. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    экзешник затем, чтобы перепроверить..
     
  4. Vam

    Vam New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2008
    Сообщения:
    149
    Перепроверить что? Если пикод, так он хеширован, если реализацию команд VM - то это, конечно, возможно, только их интерпретация приведена в логе.
     
  5. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    je_
    Ваш multi-threading без LOCK на многопроцессорной тачке будет работать криво даже в виде натива (покурите мануал по LOCK+ пример по спинлоку).
    После того как понимание придет, прочитайте еще раз про алгоритм виртуализации из #100.
     
  6. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    неправильный аргумент!

    если мая тачка ОДНОпроцессорная, то только ВЫ портите дело!
     
  7. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Vam
    Да вы видимо пикод от VMProtect никогда не видели чтобы сравнивать "аналогичность" реализации с этой поделкой :))
    P.S. Судя по наличию команд XOR SUB XCHG CMP в исполнителе ВМ в явном виде - это похоже на Code Virtualizer.
     
  8. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    je_
    Ну я не спорю что на вашей тачке работает все как надо, но как правило программы пишут так, чтобы они работали одинаково правильно на любом компьютере. Вот когда вы поймете что никто кроме вас не будет исправлять ваши баги в вашей программе, тогда глядишь и VMProtect заработает "правильно" с вашим кодом :))
     
  9. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Я спорю. Не может виртуализированный код работать быстрее чем нативный, ну никак.
     
  10. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    то есть вы признаете, что на ОДНОпроцессорке VMProtect будет портить дело и не будуте ентого исправлять изза (высокомерия!?)
     
  11. Vam

    Vam New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2008
    Сообщения:
    149
    А кто вам сказал, что эти команды в ВМ присутствуют в явном виде, столбик Command это интерпретация команд ВМ по возможности приближенная к ассемблеру.
    Вопрос скорее не в том, какая это защита VMProtect или Code Virtualizer или некоторые другие, работающие на своих ВМ, а в способе их устранения.
     
  12. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    je_
    Я вам еще раз повторю - никто ваши ошибки кроме вас исправлять не будет. Если вы не заботитесь о том, чтобы ваш код работал правильно везде (в том числе и на виртуальном процессоре), что почему это должен делать кто-то еще?
    P.S. Создается впечатление что вы начали играть в игру "сам себе злобный Буратина" и никак не можете остановиться. Я могу вам привести множество примеров когда нативный код будет работать не так как после виртуализации, но это не значит что в VMProtect там ошибка, а значит что разработчик просто "забыл" проинициализировать локальную переменную или думал что у всех тоже однопроцессорные тачки :))
     
  13. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    понятно, но здесь конкретно o VMprotect-е идёт разговор.
    и теоретические варианты не-сегодня найдены
     
  14. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    dermatolog, где я выказал злобу?

    a высокомерие очень близко к тому!
     
  15. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Vam
    А вы думаете зачем я вас спрашивал что у вас обозначает первый столбец? :)) Как раз для того чтобы убедиться что это не "скрученный" пикод в х86 аналог.
    Вот ведь пример:
    Код (Text):
    1. 011BE132  7C             pop    eax                 ;771ED596             ;0x771ED596
    2.                          xor    [esp], eax          ;00000000             ;0
    3. 011BE133  A8             pop    eax                 ;00000000
    (011BE133 - 011BE132) = 1 байт. Т.е. если бы команда "xor [esp], eax" была результатом свертывания пикода до х86 аналога, то разница былы бы намного больше - отсюда я делаю вывод что XOR (да и для остальных команд тоже самое) присутствует в исполнителе ВМ в явном виде (в принципе почти весь handler у вас уже и написан):
    Код (Text):
    1. VM_LOOP:
    2. ...
    3. VM_XOR:
    4. pop eax
    5. xor [esp], eax
    6. jmp VM_LOOP
     
  16. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    je_
    Мдяяя. Как там у вас всё запущено :))
    Погуглите фразу "сам себе злобный буратина" - потом поймете что я имел ввиду.
     
  17. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    dermatolog,

    послушайте меня!

    значитЬ, команда XCHG имеет своё свойство (блокируещее);
    виртуализовав его, вы изъяли это свойство.
    ДА, вы руководствовались конкретным соображением.
    но и я показал вам НУЖНОСТЬ того свойства!

    если вы заботитесь о правильной работе ВАШЕЙ (а не чужой) программы,
    вы должны исправить этот факт, то-есть просто изять виртуализацию XCHG.

    в чём проблема??
     
  18. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    ну и к кому это относится!?

    * Сам Себе Злобный Буратино (сокр. ССЗБ) — фразеологический жаргонизм, происходящий из компьютерной среды. Возник, по-видимому, в конце 1990-х в русском сегменте сети Фидонет, где получил широкое распространение. Возводится к фразе кота Базилио «Буратино, ты сам себе враг» в фильме.

    Наиболее часто она применяется для высмеивания профанов (чайников) в разных областях действительности, например эту фразу могут применить в ответ на воинственно безграмотные действия такого профана: «Ну и сам себе злобный Буратино». В настоящее время фразеологизм имеет некоторое распространение на различных форумах и в блогах Рунета.
     
  19. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    je_
    Т.е. вы уже согласны что использование XCHG без LOCK небезопасно в общем случае?
    Если бы вы внимательно прочитали #100, то смогли бы заметить что изъятие виртуализации XCHG получается путем добавления префикса LOCK.
    Вам добавить преффикс LOCK перед критичными XCHG/XADD/CMPXCHG религия не позволяет или все тотже злобный Буратина? :))
    Ну судя по SUB ESP, ESP и "если мая тачка ОДНОпроцессорная, то только ВЫ портите дело" все-таки к вам :))
     
  20. je_

    je_ New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    143
    >>вы уже согласны что использование XCHG без LOCK небезопасно в общем случае?

    нет!
    я думаю, в юзермоде и nonshared_memory должно быть всё ОК!

    здесь только вы упорствуете : D, отвергая исправить исправимое.

    тогда давайте так: покянитесь(:), что НЕ УБЕРЁТЕ XCHG виртуализацию, как-бы вас не попросили ваши кастомеры!!!!!!!!!!!!!