Сейчас на форуме: (+9 невидимых) |
eXeL@B —› Протекторы —› Декомпилятор ВМ |
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2010 12:33 · Личное сообщение · #1 Вашему вниманию предлагаются наработки по декомпиляции ВМ. Проект на сегодняшний день для меня завершен, но жаль если результат "ляжет на полку", может кому-нибудь и пригодится. Предлагаю сначала ознакомиться с обзором, и если будет интерес то могу выложить и сам плагин, или здесь или в личку заинтересованным лицам, каким образом, пока ещё не решил... Но если кто-либо ожидает увидеть "автоматическое чудо", то сразу скажу - его нет. Для того чтобы получить результат нужна ручная предварительная работа: - с исследуемой программы должна быть снята упаковка - точки входа в ВМ находятся вручную - возможно неоднократное "жамкание" клавиш в OllyDbg, а возможно и модификация кода, чтобы попасть в нужное место, в зависимости от защищенной функции - необходимо вручную прицепить к программе требуемый секцию - запись результатов в файл это тоже ручная работа, но уже более приятная Не всё гладко обстоит с определением реализаций ВМ, на сегодняшний день примерно каждая третья реализация автоматом не определяется, приходится под неё модернизировать плагин, т.к. не могу сразу предусмотреть все случаи "издевательств" ВМ с кодом примитивов. Лучше дела с восстановлением "исходного" кода защищенных функций - 70% нормально восстанавливается, хотя во многом это зависит от самой структуры функции. Таким образом, если будет заинтересованность и помощь в нахождении подобных ситуаций, то проект может быть доведен до релизной стадии. ЗЫ: Речь идет об Ореановских машинах. Нигде специально не упоминал. 9c41_03.03.2010_CRACKLAB.rU.tgz - VMSweeperLst.rar ----- Everything is relative... |
|
Создано: 23 сентября 2018 12:24 · Личное сообщение · #2 |
|
Создано: 23 сентября 2018 12:57 · Личное сообщение · #3 Bronco пишет: интересно посмотреть как это реализовано, сиськи под виртой это круто, гипервизор в ауте ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 23 сентября 2018 14:14 · Личное сообщение · #4 |
|
Создано: 23 ноября 2018 10:54 · Поправил: Vamit · Личное сообщение · #5 Давно ничего не писал в эту тему, вот обещанное когда-то... Особенности структуры ВМ в VmProtect 3.1 и 3.2 (архитектура х86) 1. "Плавающие" регистры ВМ. Три системных регистра ВМ: SVM - стек ВМ, PICODE - указатель на ленту пикода, OFFPRM - кодированное смещение обработчика примитива, могут размещаться в любом из 3х регистров ЦПУ esi, edi, ebp. 2. Примитивы ВМ: - регистры eax, ecx, edx в примитивах разнозначны, это говорит о том что один и тот же примитив может быть реализован на разных регистрах. - добавлены 3 NAND примитива для разных размеров инструкций (byte, word, dword). - добавлено 5 примитивов смены вм, осуществляющих перемещение системных регистров ВМ. 3. Условные переходы. Стековая реализация изменена на регистровую с NAND/NOR примитивами. Загружаются два возможных адреса перехода, затем анализируемые флаги преобразуются к маске 00000000/FFFFFFFF, маска применяется к переходам, результат дает адрес перехода. 4. Изменены некоторые шаблоны виртуализации инструкций. - NAND/NOR примитивы равнозначны, каждая логическая инструкция может виртуализоваться любыми из них или их комбинацией. 5. Исполнение ВМ. - на каждом безусловном переходе может осуществляться смена вм (изменение системных регистров, направление ленты пикода, изменение базы OFFPRM, алгоритм кодирования адреса примитива). - так же смена вм может выполняться при каждом входе в вм после выполнения невиртуализованных вызовов функций или инструкций кода. - Vmp 3.2 имеет уникальный алгоритм кодирования адреса каждого примитива. Всё остальное осталось старым и было описано ранее. ----- Everything is relative... | Сообщение посчитали полезным: plutos, ELF_7719116, HandMill, 4kusNick, daFix, ClockMan, v00doo, mushr00m |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 23 ноября 2018 11:39 · Личное сообщение · #6 |
|
Создано: 23 ноября 2018 12:58 · Поправил: Vamit · Личное сообщение · #7 ELF_7719116 Можно и подробней на конкретном примере... Обфускация и прочая хрень тут удалены, приведен чистый код пары виртуализованных инструкций, а сколько тут удалено хрени можно увидеть по адресам инструкций - они линейны Code:
----- Everything is relative... |
|
Создано: 23 ноября 2018 18:59 · Поправил: difexacaw · Личное сообщение · #8 |
|
Создано: 28 ноября 2018 00:20 · Личное сообщение · #9 Vamit пишет: Давно ничего не писал в эту тему, вот обещанное когда-то... Особенности структуры ВМ в VmProtect 3.1 и 3.2 (архитектура х86) 1. "Плавающие" регистры ВМ. Три системных регистра ВМ: SVM - стек ВМ, PICODE - указатель на ленту пикода, OFFPRM - кодированное смещение обработчика примитива, могут размещаться в любом из 3х регистров ЦПУ esi, edi, ebp. 2. Примитивы ВМ: - регистры eax, ecx, edx в примитивах разнозначны, это говорит о том что один и тот же примитив может быть реализован на разных регистрах. - добавлены 3 NAND примитива для разных размеров инструкций (byte, word, dword). - добавлено 5 примитивов смены вм, осуществляющих перемещение системных регистров ВМ. 3. Условные переходы. Стековая реализация изменена на регистровую с NAND/NOR примитивами. Загружаются два возможных адреса перехода, затем анализируемые флаги преобразуются к маске 00000000/FFFFFFFF, маска применяется к переходам, результат дает адрес перехода. 4. Изменены некоторые шаблоны виртуализации инструкций. - NAND/NOR примитивы равнозначны, каждая логическая инструкция может виртуализоваться любыми из них или их комбинацией. 5. Исполнение ВМ. - на каждом безусловном переходе может осуществляться смена вм (изменение системных регистров, направление ленты пикода, изменение базы OFFPRM, алгоритм кодирования адреса примитива). - так же смена вм может выполняться при каждом входе в вм после выполнения невиртуализованных вызовов функций или инструкций кода. - Vmp 3.2 имеет уникальный алгоритм кодирования адреса каждого примитива. Всё остальное осталось старым и было описано ранее. Скорее всего это задел для более глубокой модернизации протектора думаю скоро весь код вм будет размазан по странице памяти приложения что не позволит просто сдампить и изучать его........... ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 17 октября 2019 02:03 · Личное сообщение · #10 интересуют пруфы на разные генераторы/оптимизаторы/ир и дальнейшей компиляции например в х86, помимо ллвм, и есть ли такие есть в природе, либо что почитать на эту тему, но не теоретические талмуды с одной водой. Code:
конпиль студии например пишет практически "как есть", конпиль дельфи совсем не оптимизирует ничего. |
|
Создано: 17 октября 2019 10:24 · Личное сообщение · #11 по мотивам http://0xeb.net/2018/03/using-z3-with-ida-to-simplify-arithmetic-operations-in-functions/ попробовал засунуть в z3 и дважды упростить Code:
Чуток упростилось, но не до идеала. Второе упрощение ничего дополнительно не дает. Посчитало конечно верно. Code:
----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: plutos, bartolomeo, mak, SReg, ELF_7719116, HandMill |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 18 октября 2019 15:10 · Личное сообщение · #12 собственно, этот тонкий момент, когда сгенерированный лучами вагон кода переносим из IDA для оптимизации и упрощения - обычно используется студия с настроенным на максимальную оптимизацию компилем а-ля intel parallel studio? или уже существуют проверенные, более прогрессивные варианты решения задачи? |
|
Создано: 18 октября 2019 17:02 · Поправил: Orlyonok · Личное сообщение · #13 |
|
Создано: 18 октября 2019 19:37 · Личное сообщение · #14 |
|
Создано: 18 октября 2019 21:02 · Личное сообщение · #15 |
|
Создано: 23 октября 2019 14:12 · Поправил: Boostyq · Личное сообщение · #16 |
|
Создано: 26 октября 2019 22:52 · Личное сообщение · #17 |
|
Создано: 27 октября 2019 17:12 · Личное сообщение · #18 |
|
Создано: 28 октября 2019 15:34 · Поправил: Boostyq · Личное сообщение · #19 difexacaw пишет: Подружка Мда, дурак и не лечится. Настолько ярое желание докопаться до моих сообщений, что он даже не читает их, прежде чем отвечать свой бред. difexacaw пишет: Свернуть примитивные выражения можно Ну так сверни. Но насколько я помню это ты пытался свернуть алгоритм хэша в примитивах, когда там нечего было сворачивать, оскарбляя всех кто пытался тебе помочь. И насколько я понимаю ты полное дно в этом, вначале сгенерируй хотя бы промкод и прооптимизируй его автоматикой, а потом лечи мне что можно и что нельзя. ----- В облачке многоточия | Сообщение посчитали полезным: DenCoder, SReg |
|
Создано: 28 октября 2019 19:01 · Личное сообщение · #20 |
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . |
eXeL@B —› Протекторы —› Декомпилятор ВМ |