Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Программирование —› Запутывание кода в VM
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 3.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 октября 2007 00:06
· Личное сообщение · #1

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




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 17 октября 2007 09:26
· Личное сообщение · #2

dermatolog пишет:
при этом скорость может упасть настолько, что она будет неприемлима для практического использования

Пишим микроядро, и на базе него строим логику работу второй машины. Причем не забываем о профайлинге. И в случае, если тратится много времени на выполнение некоторой команды, просто выполняем для нее сквозную эмуляцию до уровня кода микроядра. Простое делегирование полномочий. Да, скорость выполнения на второй вм упадет, но всегда можно будет подобрать некоторую - "терпимую", величину времени выполнения инструкции пикода, или небольшого набора.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 17 октября 2007 09:50 · Поправил: dermatolog
· Личное сообщение · #3

В принципе для любой ВМ есть множество вариантов запутывания логики в самом исполнителе - к примеру вкллючение непрозрачных предикатов на уровне пикода и в зависимости от из значений выполнение различных действий на уровне исполнителя (набор действий может быть очень широким, начиная от смены ключа по дешифровке пикода и заканчивая сменой логики самой ВМ при выполнении ВМ команд). Т.е. есть достаточно много методов усложнения логики ВМ без использования второй ВМ, которая будет исполнять часть первой ВМ, и практически с нимимальным падением скорости.




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 17 октября 2007 10:00
· Личное сообщение · #4

Да еще можно реализовать эмуляцию многопоточности, что-то типа виндовых фиберов.Впринципе это можно заюзать как некоторый механизм расспаралеливания задач на вм или между несколькими вм. А вообще - вариантов море.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 17 октября 2007 10:06
· Личное сообщение · #5

tnt17 пишет:
Да еще можно реализовать эмуляцию многопоточности, что-то типа виндовых фиберов.Впринципе это можно заюзать как некоторый механизм расспаралеливания задач на вм или между несколькими вм


Если реализовать обфускацию на уровне самомого пикода то очень сложно в результате получить 2 независимых между собой потока инструкций (да их и на необфусцированном коде практически не бывает ) поэтому в результате мы опять получим выполнение пикода в один поток (при этом решив попутно дохера задач по синхронизации нескольких потоков ВМ между собой и в результате практически не получив никакой отдачи)

tnt17 пишет:
А вообще - вариантов море.

Причем ограничивается только фантазией разработчика )



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2007 03:59
· Личное сообщение · #6

dermatolog пишет:
Самый простой - обработка конечного исполнителя ВМ метаморфом

Ну уж нет. Сколько по времени ты это писал? На перле за 2 часа был готов прототип. Модификация коллграфа и полезный мусор.




Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 18 октября 2007 06:01
· Личное сообщение · #7

S_T_A_S_ пишет:
Сколько по времени ты это писал? На перле за 2 часа был готов прототип.

А у меня за час уже был готовый вариант, а не просто прототип )




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 18 октября 2007 11:25
· Личное сообщение · #8

dermatolog пишет:
Насчет "вм будет сама частично работать на пикоде" для этого достаточно завиртуализировать часть исполнителя одной ВМ чтобы она работала на другой ВМ (при этом скорость может упасть настолько, что она будет неприемлима для практического использования).

Что и наблюдается в ВМ проте. + еще и код раздувается. Аспр тоже пошел по этому пути, только вовремя остановился.

-----
Yann Tiersen best and do not fuck




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2007 12:29
· Личное сообщение · #9

dermatolog пишет:
за час уже был готовый вариант

Из этого часа 5 минут ушло на дизассемблер? =) Прототип в моём понимании - это минимально рабочий вариант, который уже можно использовать, поскольку выполняет своё предназначение. А 2 часа - это полный цикл разработки, от идеи до результата.



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 18 октября 2007 12:44
· Личное сообщение · #10

S_T_A_S_
Ты у нас круче чем горы, и очень любишь принижать достижения других, хотя твои работы никто тут не видел.

dermatolog пишет:
А у меня за час уже был готовый вариант, а не просто прототип

Да ладно, у слона все равно длинее и толще (с) непомню кто.

-----
PGP key <0x1B6A24550F33E44A>





Ранг: 44.2 (посетитель), 69thx
Активность: 0.140.02
Статус: Участник

Создано: 18 октября 2007 12:49
· Личное сообщение · #11

Povidimomu vsem v topike prishol spam 'enlarge your penis now' . Vokrug da okolo, tor vy podumyvaete o svojom prote?




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 18 октября 2007 12:50
· Личное сообщение · #12

ntldr пишет:
Ты у нас круче чем горы, и очень любишь принижать достижения других, хотя твои работы никто тут не видел.

ну почему не видел, у него есть неплохая библиотека для фасма. правда она на другом форуме проскакивала, но всеже

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 18 октября 2007 12:52
· Личное сообщение · #13

specz
не подумываю. я то тут нипричем. просто высказываю свое мнение.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2007 13:22 · Поправил: S_T_A_S_
· Личное сообщение · #14

ntldr
Я в общем-то специально расчитывал, что моё сообщение поймут не все ;) То, что dermatolog может за час собрать из готовых кусков метаморф меня совершенно не удивляет. Он и аналог того о чём я писал сделает за столько же, если не меньше... Если знает PERL на уровне, мне вот пришлось ставить задачу спецу.

tnt17 пишет:
библиотека для фасма

Умерла давно, точнее, заменена на С++ аналог




Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 18 октября 2007 14:12
· Личное сообщение · #15

S_T_A_S_ пишет:
Из этого часа 5 минут ушло на дизассемблер? =)

На дизассемблер в своё время ушло гораздо больше времени. А применимо к мутации больше необходим обратный процесс - из разобранной на аргументы команды собирать её бинарное представление.



Ранг: 3.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 октября 2007 14:56
· Личное сообщение · #16

Ну, лично я не вижу большого позора в том, чтобы использовать чужие наработки в своих прогах, особенно такие как дизасм .Что даром Bill Prisoner, Rem или Z0mbie старались? Ище пусть кто-то скажет, что Солодовников все сам писал в своем аспирине!



Ранг: 3.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 октября 2007 15:00 · Поправил: DrSlonix
· Личное сообщение · #17

Ксати дизасм я и сам использую BPDE 1.2. Без него не кражу инструкций, не API redirection не вм не реализуешь. А хотя это дело каждого личное



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2007 16:33
· Личное сообщение · #18

dermatolog пишет:
применимо к мутации больше необходим обратный процесс - из разобранной на аргументы команды собирать её бинарное представление.

Угу, и тут на первый взгляд уже не заюзаешь запросто доступные движки... Вот и думай, что больше в стотьях - вреда, или пользы. В аттаче старый пример альтернативного решения (каюсь, мыло таки я поправил в сорце =).

c1fa_18.10.2007_CRACKLAB.rU.tgz - wbaes.rar



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 18 октября 2007 17:19
· Личное сообщение · #19

А вот в нашей конторе(какой-не скажу), для защиты мы заморачиваться с супер-VM не стали,
нужно было быстро сварганить простейшую защиту:
1. Программа использует нижеприведенный (как у инсталлятора) алгоритм, представляет собой один-единственный PE, только в своем теле хранит неколько библиотек своих ф-ций, использует только LoadLibrary и delay-load, имеет в своем теле runtaim- перехватчик ф-ции Load/Unload Library, для расшифровки и загрузки/выгрузки в память необходимых в данный момент модулей машинного кода похожих по сути на -dll, получилось что-то вроде exe после PEBundle, только замороченней. Соответственно имелась привязка к ключу и железу, простейшая антиотладка на SEH и именах ф-ций.
2. Написали свой инсталлятор в виде exe, который в ресурсах хранит следующие архивированные одним из архиваторов запароленные файлы: а). Файл структуры открытого ключа (запароленный на всякий крайний другим открытым ключем, хранящемся в инсталляторе почти свободно), б). Файл устанавливаемой программы, запароленный с учетом номера каждой отдельной копии ПО и ключа, который генерируется, исходя из даты, HDD ser numb и прочей лабуды, касаемой BIOS и т.д, информация о которой доступна в реестре, в). массив машинного кода генератора первичного ключа, отсылаемого нам для активации, запарроленного структурой открытого ключа, извлекаемой из ресурсов. И естественно проверка на валидность CD и т.д. времени на обрезку ненужных заголовков в файлах не было. Естественно пришлось собрать компрессор для реализации всех заморочек. Оказалось все просто и не долго.
Описывать больше- некогда сам я к этому отношение имел не очень, примерно так насколько помню.

-----
продавец резиновых утёнков




Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 18 октября 2007 20:13
· Личное сообщение · #20

S_T_A_S_ пишет:
каюсь, мыло таки я поправил в сорце =).

кажется я видел этот (или ну очень похожий сорец), и мейл там был не твой указан?




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 18 октября 2007 21:00
· Личное сообщение · #21

specz, ты своей фразой и развел) tnt17 ништяк идеи предлагал...dermatolog тоже интересные мнения высказывает...

-----
Researcher




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 19 октября 2007 03:12 · Поправил: S_T_A_S_
· Личное сообщение · #22

ssx пишет:
мейл там был не твой указан

В оригинале, что ты видел, должно было быть моё мыло, только старое и невалидное уже (были еще проблемы с компиляцией сорца такого размера и тема на васме). Но от графьев можно что угодно ожидать, не удивлюсь если он провозгласил себя автором =)

Кстати, раз уже видел... не в курсе, ключ научились извлекать?


<< . 1 . 2 .
 eXeL@B —› Программирование —› Запутывание кода в VM
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати