Сейчас на форуме: (+5 невидимых) |
![]() |
eXeL@B —› Программирование —› Запутывание кода в VM |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 16 октября 2007 00:06 · Личное сообщение · #1 Товарищи, решил вот написать несложный прот и было бы неплохо реализовать в нем ВМ. Но я хочу максимально затруднить ее анализ и изучение. Машинку (ее рабочий скелет) я сделал такую, что она способна эмулировать и арифметику и лог. операции. Но как ее защитить. Если кто-то сталкивался с подобной проблемой поделитесь опытом. ![]() |
|
Создано: 16 октября 2007 00:11 · Личное сообщение · #2 |
|
Создано: 16 октября 2007 00:27 · Личное сообщение · #3 |
|
Создано: 16 октября 2007 00:27 · Личное сообщение · #4 |
|
Создано: 16 октября 2007 00:32 · Личное сообщение · #5 DrSlonix как и обычную прогу - мусорные инструкции, полиморфизм применительно к движку, мутация байткода. почитай че-нить по теории трансляции, если вникнишь, то тебе будет намного проще с проектированием ее защиты и отладкой. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 16 октября 2007 00:36 · Личное сообщение · #6 |
|
Создано: 16 октября 2007 00:42 · Личное сообщение · #7 Crazy_Death пишет: а в чем смысл прота если он опенсорсный? В в чем смысл жизни? Взять тот же yC, yodaProtecor, Morphine - оперносрсные, но очень даже неплохие разработки. Просто будет база для создания чего-то нового и интересного, так сказать концепт модель, что впринципе и не плохо. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 16 октября 2007 00:48 · Личное сообщение · #8 |
|
Создано: 16 октября 2007 00:50 · Личное сообщение · #9 |
|
Создано: 16 октября 2007 00:53 · Личное сообщение · #10 |
|
Создано: 16 октября 2007 00:55 · Личное сообщение · #11 |
|
Создано: 16 октября 2007 01:58 · Личное сообщение · #12 |
|
Создано: 16 октября 2007 08:31 · Личное сообщение · #13 |
|
Создано: 16 октября 2007 08:46 · Личное сообщение · #14 |
|
Создано: 16 октября 2007 10:24 · Личное сообщение · #15 |
|
Создано: 16 октября 2007 10:47 · Личное сообщение · #16 В принципе, попробую метаморф (я тут немного изменил один из движков Z0mbie на основе частоты встречаемости опкодов в коде программ), хочу также, чтобы в коде самой ВМ было багатенно вызовов процедур, которые помимо мусора выполняют операции, также не влияющие на эмуляцию, но в эмуляторе как-то использовался бы их результат (как именно - не суть важно:s5 ![]() Хочу спросить, как можно защитить машинку от дампа. - если вопрос слишком простой, прошу не пинать ![]() ![]() |
|
Создано: 16 октября 2007 11:33 · Личное сообщение · #17 |
|
Создано: 16 октября 2007 11:46 · Личное сообщение · #18 |
|
Создано: 16 октября 2007 12:32 · Личное сообщение · #19 |
|
Создано: 16 октября 2007 13:02 · Личное сообщение · #20 |
|
Создано: 16 октября 2007 16:39 · Личное сообщение · #21 dermatolog пишет: Вариантов усложнения логики ВМ очень много. Самый простой - обработка конечного исполнителя ВМ метаморфом. vins пишет: имхо дерматолог прав, другого способа усложнить анализ нет. vins - и где же логика? Способы есть, их много, а dermatolog назвал всего лишь один. Например,заставить некоторую часть кода движка, расшифровываться и выполняться самой же ВМ. Ну и плюс метаморфические преобразования байткода, динамическое изменение байткода и логики реализации движка. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 16 октября 2007 19:05 · Поправил: vins · Личное сообщение · #22 tnt17,логика в том, что нужно как можно сильнее спрятать саму вм, чтоб свести возможность написания декомпилера к минимуму. Ну можно идти дургим путем и сначало преобразовывать код в специфический алгоритм, а потом на него вм вешать, как у рема в кейгенми было, хоть декомпиль и был написан но от гимора с анализом это не избавило +) ![]() |
|
Создано: 16 октября 2007 19:19 · Личное сообщение · #23 vins задача спрятать вм, это немного другая задача, хоть она и кассается разработки прота. в данном случае немного другое задание - качественная реализация самой вм. т.е. максимально затруднить жизнь тому, кто будет ее разбирать и свести возможность автоматического разбора сторонним софтом к минимуму. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 16 октября 2007 23:38 · Личное сообщение · #24 |
|
Создано: 17 октября 2007 05:34 · Личное сообщение · #25 tnt17 пишет: в данном случае немного другое задание - качественная реализация самой вм. т.е. максимально затруднить жизнь тому, кто будет ее разбирать и свести возможность автоматического разбора сторонним софтом к минимуму Независимо от того какая у ВМ будет архитектура конечным этапом перевода её в "нечитаемый" вид всё равно будет метаморф, т.к. метаморф непосредственно работает с командами процессора и не как не зависит от логики самой ВМ. Конечно затруднение анализа очень сильно зависит и от самой архитектуры ВМ (в том числе и все что связано с самим пи-кодом), но это нужно разрабатывать на самом первом этапе и готовых решений здесь никто предложить не сможет. ![]() |
|
Создано: 17 октября 2007 08:26 · Личное сообщение · #26 |
|
Создано: 17 октября 2007 08:42 · Личное сообщение · #27 |
|
Создано: 17 октября 2007 08:45 · Личное сообщение · #28 dermatolog А попробуй доберись к тому метаморфу. Т.е. сделай анализ, если вм будет сама частично работать на пикоде, иметь несколько витков логического развития, при каждом покрытии кода, генерировать новую логику. В идеале: одна копия программы - одна, практически уникальная, вм. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 17 октября 2007 08:58 · Поправил: dermatolog · Личное сообщение · #29 Azur1d пишет: А никто не пробовал вделать метеморф не для ВМ, а для пикода? чтобы каждый раз генерировлася новый пикод... Пробывал ![]() tnt17 пишет: Т.е. сделай анализ, если вм будет сама частично работать на пикоде, иметь несколько витков логического развития, при каждом покрытии кода, генерировать новую логику. В идеале: одна копия программы - одна, практически уникальная, вм. Насчет "вм будет сама частично работать на пикоде" для этого достаточно завиртуализировать часть исполнителя одной ВМ чтобы она работала на другой ВМ (при этом скорость может упасть настолько, что она будет неприемлима для практического использования). Насчет создания уникальной ВМ для каждой копии программы - тут лучше смотреть в сторону макрокомандной ВМ, когда логику макрокоманд можно клепать уже в процессе виртуализации (но при этом "свернуть" пикод у макрокомандной ВМ будет намного легче чем у микрокомандной). При этом резко увеличивается количество лазеек для патча как в самом пикоде, так и в исполнителе. ![]() |
|
Создано: 17 октября 2007 09:06 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Программирование —› Запутывание кода в VM |