avraam лучше ломай сам прот и восстанавливая его полностью а не ищи инфу, если и найдешь то старую никто с тобой своими наработками не поделиться ясное дело что бы поделились нужно было этим заниматься в далекие 2002-2004 года тогда бы попал в какую то комманду все оффтоп зы высказывания криса посмешили дааааа
Конечно ковырять вмпрот интересно , но не знаю как в курсе или нет сам dermatolog , но уже скоро ворвуться новые технологии виртуализации. Я говорил с одним профессором в Институте кибернетики , так вот модели виртуализации они строют уже давно и сотрудничают с компанией вмваре , так как их студенты ...кстатти они русские , пишут им новые коды. Смысл этих кодов прост , получилось сделать так что ВМ машины или реализации вм защит и так далее могут работать быстрее чем на обыкновенном компьютере с легкой оптимизацией по новой технологии примерно в 10 раз быстрее. Если используется более доскональная оптимизация то скорость работы максимально достигнута почти в 1000 раз быстрее. Все это базируется естественно на математике , и введением новых компиляторных техник. В инете инфы пока 0 ... почти 0 ... но уже скоро эти коды будут работать в вмваре , для повышения скорости работы виртуальных систем. Это означает лишь то что виртуальные машины как защита будут еще прогрессировать огого как. И при этом совсем не отстовать а даже перегонять обыкновенные проты по скорости выполнения. У технологии есть один минус ... он единственный =) но я не считаю его минусом ... скорость выполнения кода н вм останется более медленной , только на редко встречающихся блоках данных , но на совпадающих блоках данных и более часто использующихся скорость будет максимальна. Эта проблема решается сейчас ... в скором времени выйдет демонстрация этой техники. Когда dermatolog доберется до этой технологии , я думаю его прот как и многие другие по виртуализации , станут лидирующие на рынке , кроме этого модель вм эмулции будет координально изменена , поэтому ручаюсь что если проект не умрет , а врятли он умрет , то все нынешние декомпилеры просто выйдут в паблик , ибо толку от них уже будет меньше. Сегодня мы уже начинаем наблюдать процесс шевеления ... кто то смотрит дальше , кто то ближе , но все понимают то исход уже скоро , и много факторов на то влияют. В идеальном проте ..или точнее не идеальном .это слишком ) нет таких протов ... в современном проте будет и минус =) Этот минус заключается в том что паралельно с разработкой таких вм машин ведется разработка Кодоанализаторов построеных на тех же технологиях , они в сотни раз круче любого декомпилера , и делают такие чудеса , что трудно себе представить. Поэтому борьба между вм протами и крэкерами останется на том же уровне , ибо техники будут схожи ... тут уже пойдет фантазия и кто на что способен в плане реализаций. Но как показала практика такой кодоанализатор , пережевывает нынешние вм ....и выплеввывает абсолютно оптимизированный вариант , без мусора , а также с полностью переделанным кодом. Кто то скажет , вот это трудно такой код написать , труждно тогда когда не знаешь что да как , технологии уже есть , и они вырвавшись в масы принесут новое развитие компьютерных технологий. Поэтому dermatolog понимая это =) скажу ... оч повезло с выбранным направлением протов. Думаю твой продукт войдет в историю как начало прогрессивных технологий вм машин.
Боян, старфорс давно имеет свой собственный профилировщик, прогнав через который защищаемое приложение она получает инфу о времени выполнения отдельных частей кода, таким образом виртуализируется не все приложение, а только части которые требуют немного процессорного времени по отношению к другим.
TSS Ты не в теме ... Техника совсем другая ... и используется в другом контексте .. речь вообще не об этом. А речь о том что любой вмный код будет быстрее процессорного в натуральном виде. Так что звиняйте =)
кстати, dermatolog, щас усмотрел, что XCHG тоже виртуализуете; но оно имеет LOCK-ирующий! не правильно как-то..
je_ Ээээ. Вообще-то XCHG [mem],reg и LOCK XCHG [mem],reg это 2 разные команды. Вы про какую сейчас говорите?
calidus > но уже скоро ворвуться новые технологии виртуализации. > Я говорил с одним профессором в Институте кибернетики, > так вот модели виртуализации они строют уже давно и > сотрудничают с компанией вмваре смешал все в кучу. *) варя не использует новых технологий виртуализации по целому ряду соображений о чем и объясняет у себя на сайте. *) "новые" технологии виртуалиции не новые. сроки патентов истеки просто. и они хлынули на рынок. технологии-то древние... *) никто не спорит, что можно построить виртуальную машину которая будет работать под процессором быстрее нативного кода, ес-но этот выигрыш дается не просто так, а за счет чего-то. например, резко возросшего потребления памяти; *) виртуализация (построение виртуальных машин произвольной архитектуры) и эмуляция (построение виртуальных машин на которых можно запускать уже существующий код) это перпендикулярные задачи;
Предлагаю вашему вниманию кусочек декомпилированно-эмулированной функции (после 1-го прохода), работающей под VM. На втором проходе будет очистка от "мусора" и создание исходных asm команд функции, а в заключение - вставка asm кода туда, где он и должен быть. Интересует мнение - правильный ли я избрал путь и его реализацию.
Vam Первый столбец это адрес пикода? Код (Text): 011BE132 7C pop eax ;771ED596 ;0x771ED596 xor [esp], eax ;00000000 ;0 011BE133 A8 pop eax ;00000000 ;0 Если да, то я вас огорчу - это не VMProtect.
dermatolog! ПРОЧИТАЙТЕ МАНУАЛ! XCHG И БЕЗ ПРЕФИКСА LOCK делает ЛОК. за спасибо, дайте нам авторские имена VM-хенлдеров ~:
je_ Да при том, что там как раз используется LOCK+XCHG и поверьте - это не от балды сделано. Все наоборот - это вы их плохо читаете.
вааааааааа Exchanges the contents of the destination (first) and source (second) operands. The operands can be two general-purpose registers or a register and a memory location. If a memory operand is referenced, the processor’s locking protocol is automatically implemented for the duration of the exchange operation, regardless of the presence or absence of the LOCK prefix or of the value of the IOPL. (See the LOCK prefix description in this chapter for more information on the locking protocol.) This instruction is useful for implementing semaphores or similar data structures for process synchronization. (See “Bus Locking” in Chapter 7 of the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A, for more information on bus locking.)
je_ Для тех кто в танке - объясню на пальцах: LOCK блокирует всю шину данных на период выполнения операции (независимо от количества процессоров). Без LOCK эта блокировка осуществляется только в пределах процессора, на котором она выполняется - соотвественно на многопроцессорных системах пример со Спинлок будет работать криво. Если с эти все понятно перейдем к нашим баранам: При виртуализации компилятор смотрит на наличие префикса LOCK у команды. Если LOCK есть - то команда не виртуализируется и будет выполняться в рантайме в том виде, в котором она представлена. Если LOCK нету - то значит пользователю пофиг на блокировку ячейки памяти и мы можем разбить эту команду на несколько мелких и выполнять их когда нам вздумается - причем блокировка памяти в пределах нашего процессора все равно остается. Между нашими "мелкими" командами не может вклиниться команда, которая читает или пишет в память.