Сейчас на форуме: (+9 невидимых) |
eXeL@B —› Протекторы —› Декомпилятор ВМ |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 23 . 24 . >> |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2010 12:33 · Личное сообщение · #1 Вашему вниманию предлагаются наработки по декомпиляции ВМ. Проект на сегодняшний день для меня завершен, но жаль если результат "ляжет на полку", может кому-нибудь и пригодится. Предлагаю сначала ознакомиться с обзором, и если будет интерес то могу выложить и сам плагин, или здесь или в личку заинтересованным лицам, каким образом, пока ещё не решил... Но если кто-либо ожидает увидеть "автоматическое чудо", то сразу скажу - его нет. Для того чтобы получить результат нужна ручная предварительная работа: - с исследуемой программы должна быть снята упаковка - точки входа в ВМ находятся вручную - возможно неоднократное "жамкание" клавиш в OllyDbg, а возможно и модификация кода, чтобы попасть в нужное место, в зависимости от защищенной функции - необходимо вручную прицепить к программе требуемый секцию - запись результатов в файл это тоже ручная работа, но уже более приятная Не всё гладко обстоит с определением реализаций ВМ, на сегодняшний день примерно каждая третья реализация автоматом не определяется, приходится под неё модернизировать плагин, т.к. не могу сразу предусмотреть все случаи "издевательств" ВМ с кодом примитивов. Лучше дела с восстановлением "исходного" кода защищенных функций - 70% нормально восстанавливается, хотя во многом это зависит от самой структуры функции. Таким образом, если будет заинтересованность и помощь в нахождении подобных ситуаций, то проект может быть доведен до релизной стадии. ЗЫ: Речь идет об Ореановских машинах. Нигде специально не упоминал. 9c41_03.03.2010_CRACKLAB.rU.tgz - VMSweeperLst.rar ----- Everything is relative... |
|
Создано: 16 апреля 2010 12:47 · Личное сообщение · #2 |
|
Создано: 16 апреля 2010 16:02 · Личное сообщение · #3 Vamit пишет: Прога накрытая Темидой под Олькой ведет себя нормально (стоят плагины Phantom 1.54, StrongOD upk 2010). Но при потытке запустить этот пакет из под дебагера VS 2008 для отладки декомпилятора (плагин под Ольку), Темида просыпается и посылает на свой саппорт, но иногда, раза с 3-4 всё срабатывает нормально и можно дебажить, но при нажатии в VS кнопки StopDebugging всё падает вместе с Виндой. Нашел причину падения Винды - Phantom 1.54, без него всё работает и Темида и VS... ----- Everything is relative... |
|
Создано: 16 апреля 2010 17:56 · Личное сообщение · #4 |
|
Создано: 16 апреля 2010 18:36 · Личное сообщение · #5 |
|
Создано: 21 апреля 2010 09:27 · Поправил: Vamit · Личное сообщение · #6 VMProtect (VMP) - декомпилятором получены чистые тела всех обработчиков примитивов для двух реализаций ВМ. Приведу основные отличия обработчиков по сравнению с CodeVirtualizer (CV). Тела обработчиков VMP имеют упорядоченную структуру, поэтому для их получения и распознавания пришлось разобрать вручную около десятка обработчиков, написать пару правил, применить двухуровневую регистровую деобфускацию - и всё, со всем остальным декомпилятор справился сам. В CV же для получения примитивов требовалось сначала вручную разобрать практически каждый обработчик, затем создать шаблон(ы), и только затем декомпилятор на основе шаблона(ов) мог распознать примитив. Есть несколько основных отличий от CV: 1. Использование под контекст ВМ "отдельного стека" с которым идет работа как с памятью (через ebp). Основной стек после обработчиков не меняется. Шаблон примитива в таком случае получается обнозначным. В CV же под контекст ВМ используется основной стек - это определяет основную сложность в локализации примитивов, т.к. вариантов работы со стеком куда больше, чем с памятью. Для распознавания примитивов простой регистровой деобфускации здесь недостаточно, нужно отслеживать не только изменения вершины стека, но и его содержимое. Например, примитив xchg регистра со стеком имеет около десятка разных реализаций, пока для его распознавания у меня используется 6 шаблонов, но я думаю это не предел, т.к. (см. первый пост) "каждая третья реализация автоматом не определяется". 2. Кол-во примитивов. В CV - фиксированное кол-во и не зависит от содержимого защищаемой функции, в этом случае многие примитивы имеют только тела, но никогда не используются, что затрудняет их анализ. В VMP же набор примитивов в каждой реализации ВМ динамический (в пределах 255), в набор включены только нужные (используемые) примитивы и очень много их дублей. Это упрощает их анализ для одной реализации ВМ, но в другой ВМ могут встретиться "ещё неизвестные" примитивы, что потребует доработки декомпилятора только в части добавления шаблона, но не изменения анализа. 3. "Мусорные" (незначимые, dummy) примитивы. В VMP пока не обнаружены, но не знаю есть ли они вообще? В CV таких примитивов достаточно много и их легко спутать с другими простыми примитивами (тот же xchg). 4. Обфускация обработчиков. В VMP она гораздо "круче", но только с виду, т.к. используется большое кол-во (практически весь набор инструкций i486) раритетных команд, которые легко очищаются регистровой и стековой (т.к. его вершина постоянна) деобфускацией. Наличие "двойных" маршрутов в одном обработчике с одинаковой логикой анализ не усложняет. В ручную VMP разбирать сложнее, но не декомпилятору. 5. Получение индексов регистров ВМ. В VMP индексом регистра является сам опкод примитива, т.е. для чтения и записи в разные регистры ВМ используются разные примитивы, но с одинаковым телом. В CV же индекс регистра является дополнительным хешированным байтом в пикоде. С точки зрения обработки - сложностей в обоих случаях нет. Выводы об эмуляции реальных инструкций пока делать рано, они появятся только на стадии разбора промежуточного кода, т.к. одна инструкция может быть представлена n-кол-вом примитивов. Вывод: пока счет 1 : 0 в пользу CV, хотя первоначально (до разбора VMP) у меня было другое мнение. В связи с тем, что каждая реализация VMP имеет ограниченный набор примитивов, хотелось бы заранее предусмотреть некоторые моменты, которые пока не встретились, поэтому есть несколько вопросов знатокам VMP: 1. Обрабочики с хешированием констант пикода. Всегда ли одинаковые обработчики имеют одинаковый алгоритм хеширования? 2. Уже упоминал, но выделю здесь. Имеются ли "мусорные" (незначимые, dummy) примитивы? 3. Проверка переполнения стека контекста ВМ ("наезд" на регистры ВМ). Реально ли она происходит или это сделано только на непредвиденный случай, например, как защита? Спрашиваю потому, что ещё не разбирал её алгоритм и думаю, нужно ли реализовывать её в декомпиляторе. =Дополню, ещё один вопрос забыл:= 4. Функциональный состав обработчиков. В VMP я не встретил обработчиков sub, idiv, imul, циклических сдвигов и некоторых других, хотя, обработчики add, div, mul имеются. Вопрос или они отсутствуют вообще и эти инструкции эмулируются, или они пока не встретились в разобранных реализациях ВМ? Хотя, если есть обработчик mul, то эмулировать imul бесполезно, или я ошибаюсь? ----- Everything is relative... |
|
Создано: 21 апреля 2010 13:41 · Личное сообщение · #7 Vamit пишет: В VMP я не встретил обработчиков sub, idiv, imul SUB нету, ибо его легко заменить на ADD. IDIV и IMUL есть. Могу скинуть примеры где обработчики IDIV и IMUL есть. Но на самом деле они такие же как в случае DIV и MUL. Vamit пишет: в пределах 255 Это лишь логический предел. На самом деле нельзя найти программу, где бы таблица состояла из 255 разных обработчиков. Иногда попадаются случаи, когда обработчики разные, но делают одно и тоже (если это конечно не было ошибкой моего анализа). Точное число явно выше 200 (по моим оценкам), вроде сам разработчик называл цифру. Vamit пишет: Использование под контекст ВМ "отдельного стека" Не очень врубаюсь зачем это нужно (якобы для многопоточности). В ранних версиях вмпротекта всё "вертелось" на регистре ESP. Vamit пишет: В ручную VMP разбирать сложнее, но не декомпилятору. Я нахожу все нужные инструкции одним глазом и тут же выделяю их подсветкой фона. Не знаю, что в этом сложного. На операциях с конвертацией лишь один раз ошибся - пропустил CBW, CWDE. Vamit пишет: Получение индексов регистров ВМ. В VMP индексом регистра является сам опкод примитива, т.е. для чтения и записи в разные регистры ВМ используются разные примитивы, но с одинаковым телом. В CV же индекс регистра является дополнительным хешированным байтом в пикоде. Не всегда верно. Для чего я давал свои наработки? Разные примитивы в значении разные строчки таблицы? Я бы абстрагировался от того, где и что находится, это не важно. PUSH_R16/POP_R16, PUSH_R8/POP_R8 берут номер регистра из ленты, разумеется, он закриптован (хеширование процесс не обратимый, то, что вы называете хэшированием здесь правильно называть симметричным шифрованием). PUSH_R32_BY_AL/POP_R32_BY_AL берут индекс регистра раскриптовкой КОПа, но это только для 32-бит. Vamit пишет: Всегда ли одинаковые обработчики имеют одинаковый алгоритм хеширования? Ест-но нет. Поэтому в тех наработках, что я вам дал, явно подчёркнуто это путём маркеров - "decrypt_start:"/"decrypt_end:". Вы задаёте этот вопрос, а что мешало взять две разные программы? Vamit пишет: 2. Уже упоминал, но выделю здесь. Имеются ли "мусорные" (незначимые, dummy) примитивы? Нет, таких нет. На 3-ий вопрос у меня тоже нет ответа. Пока. |
|
Создано: 21 апреля 2010 13:56 · Поправил: mak · Личное сообщение · #8 Code:
В данном случае эмуляция не полная может быть Code:
Полная эмуляция .... Sub эмулируется как add, not и изменение eflags, копать нужно в эту сторону Code:
----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 21 апреля 2010 15:07 · Личное сообщение · #9 int пишет: Я нахожу все нужные инструкции одним глазом и тут же выделяю их подсветкой фона. Ну, наверное у вас на ebp глаз наметан... int пишет: Вы задаёте этот вопрос, а что мешало взять две разные программы? Немного не точно спросил, конечно, в разных программах, да и в одной программе, но в разных реализациях ВМ алгоритмы хеширования могут быть разные. Меня интересовали алгоритмы хеширования одних и тех же примитивов в одной реализации ВМ, но с разными опкодами (дубли). Пока, что я вижу, все дубли 100% одинаковы, вот и спросил, а не могут ли они отличаться только алгоритмом хеширования? ----- Everything is relative... |
|
Создано: 21 апреля 2010 16:01 · Личное сообщение · #10 Vamit пишет: но с разными опкодами (дубли). Я бы не называл это дублям. Лучше алиасы. Ибо адрес обработчика всё равно один и тот же. А вообще вот: int пишет: Иногда попадаются случаи, когда обработчики разные, но делают одно и тоже (если это конечно не было ошибкой моего анализа) Дубль я видел лишь один раз для JMP_VM_ESP. Т.е. было два обработчика JMP_VM_ESP. Пруф могу дать. Т.е. это не было ошибкой анализа. Такой случай я действительно зафиксировал (только что проверил). Так что если вопрос в архитектурной необходимости хранить два разных представления одного обработчика, то такая возможность нужна. Да и политех, думается, эту тему тоже почитывает иногда. |
|
Создано: 21 апреля 2010 17:14 · Поправил: Vamit · Личное сообщение · #11 int пишет: Лучше алиасы. Ибо адрес обработчика всё равно один и тот же. Промашка вышла, ибо на адрес я внимание не обратил, а декомпилятору по барабану, один раз пройти по телу примитива или его части или несколько... Тогда действительно это алиасы и вопрос с их алгоритмами хеширования отпадает. Просто в CV действительно присутствуют дубли некоторых примитивов и у них разная обфускация, но дублей примитивов с хешированием я не встречал, поэтому и спросил. ----- Everything is relative... |
|
Создано: 21 апреля 2010 20:16 · Личное сообщение · #12 |
|
Создано: 21 апреля 2010 22:12 · Личное сообщение · #13 int пишет: Я же давал скрипты для IDA, которые восстанавливают таблицу. Это в очередной раз упрёк, что с моим материалом вы ознакомились невнимательно. Здесь вы что-то путаете, может быть только предлагали или упоминали о них, а получил я только doc файл с описанием примитивов. Да, внимательно его ещё не смотрел, т.к. сначала нужно было получить тела декомпилятором, что я и сделал, а затем сверить с вашими и написать для них шаблоны, что ещё предстоит сделать. А декомпилятор на счет дублей адресов я уже доработал, нечего ему впустую несколько раз ездить по одному примитиву... int пишет: А тем временем уже есть новая версия Новая версия чего, не понял? ----- Everything is relative... |
|
Создано: 21 апреля 2010 22:47 · Личное сообщение · #14 |
|
Создано: 26 апреля 2010 08:33 · Личное сообщение · #15 С примитивами (обработчиками) VMProtect работа завершена, в логах есть вся инфа. Можно приступать к созданию промежуточного кода. aaec_25.04.2010_CRACKLAB.rU.tgz - VmpPrimitive.rar ----- Everything is relative... |
|
Создано: 30 апреля 2010 15:39 · Личное сообщение · #16 В принципе промежуточный код построен, есть ещё кое-какие нюансы, но до ума довести не сложно... Столкнулся с такой проблемкой - промежуточный выход из ВМ (не знаю как правильно назвать). Стек от ВМ полностью не чистится, нативные регистры в свое исходное состояние не восстанавливаются (кодируются) и осуществляется выход из ВМ в "мусорный" код, где регистры декодируются и выполняется кое-какой нужный код, например, вызов АПИ функции или какая-либо не эмулируемая инструкция или целый их пакет, затем идет вход обратно в ВМ и продолжение работы. Всё это делается естественно в сегменте кода ВМ, а не программы. Вопрос - как правильно поступать с какими вставками? Завершить создание промежуточного кода в такой точке и начать его декомпиляцию нельзя, т.к. "действие" ВМ не завершено. Напрашиваются два варианта: 1. Вставку как есть переносить в промежуточный код (модифицируя, конечно, eip для него). 2. Вставку анализировать (деобфусцировать) и чистый код вставки перенести в промежуточный код. Затем продолжить анализ ВМ... Может есть ещё какие варианты? ----- Everything is relative... |
|
Создано: 30 апреля 2010 16:06 · Личное сообщение · #17 |
|
Создано: 30 апреля 2010 21:21 · Личное сообщение · #18 int Вариант интересный, но не совсем правильный. Вставку на данном этапе посностью деобфускировать нельзя, т.к. нативные регистры кодируются внутри ВМ, а декодируются во вставке, поэтому код нужно рассматривать единым потоком. Далее, промежуточный код у меня строится полностью рабочим, т.е. в итоге ВМ на промежуточном этапе полностью заменяется этим кодом и он работоспособен, затем он единым потоком "декомпилируется" в окончательный рабочий код, который записывается на нужное место. Совместную свертку промежуточного кода, принадлежащего разным блокам ВМ, можно предотвратить простой маркировкой вставок. Кстати, при декомпиляции CodeVirtualizer я делаю именно так, но там всё намного проще - регистры не кодируются, выход из ВМ полный, вставка без обфускации. Поэтому я за вариант 2, хотя он на этом этапе и не самый простой... ----- Everything is relative... |
|
Создано: 30 апреля 2010 21:47 · Личное сообщение · #19 |
|
Создано: 06 мая 2010 16:42 · Поправил: Vamit · Личное сообщение · #20 Промежуточный рабочий код для VmProtect получен. В аттаче правда не сам код, а лог его создания, но суть понятна. Можно приступать к его декомпиляции. В процессе создания выявился один нюанс, вызов из ВМ АПИ фунции со съеденным в ИАТ адресом, т.к. на данном этапе восстановить ИАТ невозможно, то в промежуточный код вместо call [IatApi], записываю просто call addrApi; nop; работоспособность сохраняется, но что делать с этим дальше пока не знаю. 43d3_06.05.2010_CRACKLAB.rU.tgz - 44FCA8.rar ----- Everything is relative... |
|
Создано: 06 мая 2010 19:22 · Личное сообщение · #21 |
|
Создано: 07 мая 2010 09:46 · Личное сообщение · #22 Некоторые теоретические соображения по декомпиляции промежуточного кода не зависимые от ВМ. В принципе линейный (последовательный) асм код может выполнять одновременно две разные задачи, если он подготовлен для этого специальным образом. Попробую показать это: Асм инструкции оперируют большей частью регистрами и константами (immediate). Одиночные константы в инструкциях практически не встречаются (не учитываем все команды передачи управления), а используются в совокупности с регистрами, поэтому их мы в расчет не берем. Остаются регисты и если иметь два набора регистров и "размешать" асм инструкции одного набора инструкциями другого набора, то такой код сможет выполнять одновременно две разные задачи. Практическая реализация такого кода возможна в ВМ. Описывать как это делается я не буду, кто знаком с ВМ, тот поймет. Добавлю только, что в такой код можно добавить ещё и "мусор" (обфускировать), который никакой полезной работы не делает. CodeVitrualizer - полезная работа кода одна (выполнение контекста защищенной функции) + "мусор" VMProtect - полезных работ две (выполнение контекста защищенной функции + реализация защитных механизмов) + "мусор". Наша конечная задача восстановить код контекста защищенной функции, всё остальное для этой задачи "мусор" и подлежит удалению. Это можно сделать двумя способами: 1. Академический - первоначально восстанавливаются оба рабочих кода (контекст + защита), затем защита удаляется. Плюс - можно отследить методы защиты. Минус - более полный разбор кода. 2. Практический - сразу выделяется только код контекста, остальное удаляется. Плюсы, минусы - противоположные от первого. Далее, весь этот код может быть виртуализован (CV нет, VMP да), девиртуализацию необходимо делать при любом способе, иначе: а). может быть потерян смысл восстановленного контекста б). контекст может не поместиться в отведенное ему место Хотелось бы услышать советы, как правильно поступить. И может быть у кого-нибудь имеются логические схемы виртуализации асм интрукций для VMP, общеизвестный метериал inside_VMProtect_Logic не предлагать. ----- Everything is relative... |
|
Создано: 07 мая 2010 14:55 · Поправил: Vamit · Личное сообщение · #23 Блин, блин, блин и ещё раз блин... Только сейчас дошло, что промежуточный код VMP на стадии создания нужно было модифицировать следующим образом: убрать "стековый стакан", поместив регистры ВМ в статическую память промежуточного кода, "дерганья" ebp заменить простыми push, pop на вершине реального стека, например, примитив ShlLong, сейчас: Code:
мог бы быть Code:
Плюсы: - код намного проще и короче - регистры ВМ имеют константную базу - не нужна проверка наезда стека на регистры и их смещение - и самое главное - промежуточный код становится идентичен коду CodeVirtualizer, для примера тот же ShlLong из него Code:
т.е. это код чисто стековой машины, регистры между примитивами не используются, под такой код у меня все методы деобфускации уже написаны. Нужно только разобраться с девиртуализацией. Всех с двойным праздником, Днем связи и Победы!!! ----- Everything is relative... |
|
Создано: 13 мая 2010 22:02 · Личное сообщение · #24 |
|
Создано: 13 мая 2010 22:41 · Поправил: daFix · Личное сообщение · #25 Vamit пишет: за 4 страницы ни одного дельного вопроса или предложения, а протестировать прогу никто не удосужился Дело в том что многим просто нечего сказать по теме. На форуме не так уж и много людей, которые разбираются в подобных вопросах, и большенство из них тут уже отписались. Я как-то пытался тестить, об этом отписывал в аську. Для многих ваша работа очень важна! ИМХО ----- Research For Food |
|
Создано: 13 мая 2010 22:50 · Личное сообщение · #26 offtop begin Vamit пишет: ни одного дельного вопроса или предложения типичная для этого форума картина (человек начинает что-то выкладывать или спрашивать, а ему долго не отвечают), вот что могу сказать: 1) хороших реверсеров мало, катастрофически мало; 2) все умеют ценить своё время, но время других людей часто не ценят; 3) у всех разные интересы, а в реверс-инженерии направлений для деятельности - вагон (деление по платформам - x86/ARM/Sparc/etc., деление по разрядности - 16/32/64, деление по использованию разных ОС - Win/UNIX/MAC, деление по задачам - получение полных исходных кодов/взлом любым методом/распаковка/деобфускация и декомпиляция ВМ); 4) для многих реверс-инженерия это только хобби, а как говорится делу время, потехе - час, иными словами сегодня все заняты, а завтра прибежит 10 человек. Из всего этого вывод: данная тема интересует либо тех, кто делать ничего не будет или ждёт готового (стоит лишь пролистать форум и увидеть как люди искали стрипер или другой приват годами), либо тех, кто сам что-то пишет или занимается проблемой просто теоретически. Тех кто пишет я знаю человек 10, тех кто пишет в не коммерческих целях и не на дядю - троих. Только теоретически проблемой занимается один человек. Ну это из тех кого я знаю. Далее, под дельными предложениями вы рассматриваете только те, которые сами считаете дельными. Практически все мои советы и предложения ушли в мусорный ящик, и ещё мне неинтересно помогать проекту, который, как я понял, коммерческий. Если нет, то помочь готов, но я больше люблю писать код, а не кидаться словами и рассуждать о вечном. end. |
|
Создано: 13 мая 2010 23:46 · Личное сообщение · #27 |
|
Создано: 14 мая 2010 06:32 · Личное сообщение · #28 |
|
Создано: 14 мая 2010 06:40 · Личное сообщение · #29 |
|
Создано: 14 мая 2010 09:32 · Личное сообщение · #30 Спасибо всем за ответ, хотя многие и пометили свои ответы оффтопом, за оффтопы я их не считаю - как раз по теме, т.к. в этом деле важен не только написанный код, но и сам рабочий процесс, считайте - мнение потенциальных пользователей. int пишет: Далее, под дельными предложениями вы рассматриваете только те, которые сами считаете дельными. Вы же умный человек и сами понимаете, чтобы получить то, что хочешь, требуется перелопатить кучу материала и выбрать те крупицы, которые тебе подходят, поэтому каждое предложение назвать дельным язык как-то не поворачивается. Практически все мои советы и предложения ушли в мусорный ящик Ваша неправда, мне очень помог материал по обработчикам примитивов (съэкономил кучу времени, если на написание распознавателя CV ушел почти месяц, то для VMP это же было сделано менее чем за неделю). мне неинтересно помогать проекту, который, как я понял, коммерческий. Кто вам это сказал? Коммерческим был не сам проект, а серия прог под которые он делался и эта серия была успешно им обработана. С этим я и пришел на форум, а дальнейшее развитие пошло на полном энтузиазме, т.к. по VMP и Фиме у меня никаких практических целей кроме интереса нет. то помочь готов, но я больше люблю писать код, а не кидаться словами и рассуждать о вечном. +100, я тоже, но иногда и поговорить не мешает, светлые мысли бывает появляются просто "ниоткуда". Есть такое дельное предложение, я готов сделать этот проект открытым для ограниченного круга заинтересованных людей, которые способны, могут и готовы помогать и вижу это в создании приватного SVN, но нужен ресурс и организатор. Сам проект для понимания непростой, начав его год назад (декомпиляция ВМ, а фактически ядро декомпилятора писалось с 2007 года), я уже сейчас во многом путаюсь, т.к. не любитель писать комменты, а некоторые моменты (кто пишет проги - тот знает) делаются эвристически и на конкретную цель, а уж потом, если потребуется, оформляются в законченное решение. Одно могу сказать точно, используемые методы в большинстве своем подходят для любых декомпиляторов, но есть и недостатки, они мне хорошо известны и требуют устранения, причем не эвристически и на конкретную цель, а капитально, т.к. объем исходного кода подходит уже к 1.5Мб, и часто затронув одно боишься, как бы не сломать другое, хотя на сегодняшний день я все задачи декомпиляции распараллелил как между разными типами ВМ, так и по стадиям обработки. Bronco пишет: но если потерян, закрывай топ и не *** мозги, ни себе ни людям.. Каждый волен поступать так, как ему позволяет совесть и образование.... дальше без комментариев... а тестировать на одном сабже Nightshade пишет: С одним сабжем неинтересно Одним, понимать как тип ВМ (CV)? Да я могу понять что специально найти сабж, покрытый этой ВМ, проблематично. Но - с этим я пришел на форум, а в версию 1.2 был добавлен универсальный анализатор входов в любые ВМ и восстановитель импорта, проверок - 0, только Киореску кое-что не понравилось в формах ввода... Короче, могу сказать так, что на одном энтузиазме, без должной поддержки сложно вести одновременно 3 проекта, среди которых есть и приносящие дополнительный постоянный доход... А ВМ на сегодня - это просто хобби... ----- Everything is relative... |
|
Создано: 14 мая 2010 12:42 · Поправил: mak · Личное сообщение · #31 Форум имеет важную функцию , иногда это считают за флуд , но , как сказано что комменты вести не любишь в коде , тем не менее , весьма с интересом отписываешься по теме тут , и это показывает как раз эту функцию логического рассуждения. Потом ты приходишь к решению , это похоже на интерактивное мышление. Поэтому думаю это важнее ... Типичный пример последний пост , ты придумал Регистровую трансформацию , по сути это один из основых методов работы с вмами , и думаю о нем ты знал , такой метод трансформации очень важный инструмент , что позволяет легко бегать по коду и его трансформировать. Он ранее обсуждался в какой то теме про вм темиды. Или вот например ... Vamit пишет: Остаются регисты и если иметь два набора регистров и "размешать" асм инструкции одного набора инструкциями другого набора, то такой код сможет выполнять одновременно две разные задачи.Практическая реализация такого кода возможна в ВМ. Описывать как это делается я не буду, кто знаком с ВМ, тот поймет. Добавлю только, что в такой код можно добавить ещё и "мусор" (обфускировать), который никакой полезной работы не делает.CodeVitrualizer - полезная работа кода одна (выполнение контекста защищенной функции) + "мусор"VMProtect - полезных работ две (выполнение контекста защищенной функции + реализация защитных механизмов) + "мусор". Это очень важный вывод .... тем более что он уже существует в более расширенном и сложном варианте. Так что очень интересно =) Bronco иммел ввиду что никто чьей то волей не управляет , и нечего жаловаться что нет овтетов , хотя может это месть за молчание))) Также int заметил интересно , что некоторые вещи просто проигнорированы , причем это сказано в нескольких постах. Я так понял это не только от одного человека. Это ясно когда чел увлечен своим делом. А еще если учитывать что кто то пишет свое , то тогда все ясно почему так. Vamit пишет: Есть такое дельное предложение, я готов сделать этот проект открытым для ограниченного круга заинтересованных людей, которые способны, могут и готовы помогать и вижу это в создании приватного SVN, но нужен ресурс и организатор. Если в ответ будет какая то реакция хотябы иногда =) , то администрация краклаб предоставит организацию твоему проекту ... И еще вопрос такой , почему бы не вывести функции деобфускации, для асма в отдельные возможности плагина ??? Это возможно ? ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 23 . 24 . >> |
eXeL@B —› Протекторы —› Декомпилятор ВМ |