VMP VMProtect (Туторы, скрипты, плагины, ...)

Rio

Администратор
Администратор
Сообщения
162
Реакции
188
Решил создать отдельную тему по VMProtect'у, чтобы собирать в одном месте информацию по этому проту и обсуждать детали.

Для начала ответ на самый распространенный вопрос.

1. Почему OllyDbg вылетает при запуске программы, защищенной VMProtect'ом?

Потому что VMProtect использует баг с переполнением буфера в старых версиях dbghelp.dll, из-за которого отладчик падает. Чтобы обойти его необходимо исправить баг в dbghelp.dll или положить в папку отладчика новую версию файла dbghelp.dll, который можно взять из комплекта Debugging Tools for Windows:

http://www.microsoft.com/whdc/devtools/ ... fault.mspx

Добавлено

Microsoft включил дистрибутив Debugging Tools в состав пакета Windows SDK (который весит достаточно прилично), поэтому вот альтернативные ссылки на:

1. Дистрибутив Debugging Tools v6.12.2.633 x86 от 26.02.2010 (18,3 Мбайт)
http://www.revenge-crew.com/xchg/kio/Debugging_Tools_for_Windows_v6.12.2.633_x86.msi

2. Только библиотека dbghelp.dll из дистрибутива Debugging Tools v6.12.2.633 x86 (0,5 Мбайт)
http://www.revenge-crew.com/xchg/kio/dbghelp_v6.12.2.633_x86.zip

Темы на форуме -
Use of syscall and sysenter in VMProtect 3.1
Патч и кейген RSA в VMProtect 3.x
VMProtect ULTIMATE v3.5.0 Build 1213
Анализ VMProtect c Triton (dynamic binary analysis (DBA) framework)
Inside VMProtect
Vm2Import
Исследование кода VMProtect. Часть 1. Патч хешей
VTIL (Virtual-machine Translation Intermediate Language) -
NoVmp , vmpattack , vmpdump
VMProtect Windows API Address Decoder (IDA Pro - Python)
VMProtect xx_vm Chinese Decompiler
Quick PoC for a taint based attack on VMProtect

Сборник версий
VirtualizedFuncFinder
ZVM - пакет для изучения и практики по VMP2, сорсы и пример, док на Драконском
VmpGetHWID - может быть полезен
Плагин и Сорсы для OllyDBG, цель VMP2 - Unpacking VMProtect With ODPlugin
Деобфускация VMProtect в IDA Pro используя Qiling Framework
Collection of code for HWID-Locking .NET apps with VMProtect 3.4.0
VMP.NET-Kill V2.1 (VMP 1213-1261)
GH VMProtect 3 Import Fixer 1.0.1 x86 & x64
FixVmpDump - use python script to fix vmp dump api in ida. support x86 and x64
Vm2Import - fix vmprotect import function used unicorn-engine
VMPImportFixer - VMPImportFixer is a tool aimed to resolve import calls in a VMProtect'd (3.x) binary
VMUnprotect.NET
- VMUnprotect is a project engaged in hunting virtualized VMProtect methods

Detailed Analysis of the Virtual Machine Architecture - VMProtect 2 Reverse Engineering
+ Source https://githacks.org/vmp2 or https://cracklab.team/index.php?threads/12/post-2346,
+ Bin - https://githacks.org/vmp2/um-tracer/-/tree/master/refbuilds)

Detailed Analysis of the Virtual Machine Architecture - VMProtect 2 Reverse Engineering - Part Two, Complete Static Analysis

Quick look around VMP 3.x - Part 1 : Unpacking
Quick look around VMP 3.x - Part 2 : Code Mutation
Quick look around VMP 3.x - Part 3 : Virtualization

Автоматическая классификация VM Handler-ов - The idea of using machine learning to analyze vmp

Tickling VMProtect with LLVM: Part 1 + https://github.com/LLVMParty/TicklingVMProtect
Tickling VMProtect with LLVM: Part 2 + https://github.com/LLVMParty/TicklingVMProtect
Tickling VMProtect with LLVM: Part 3 + https://github.com/LLVMParty/TicklingVMProtect
Тема по LLVM - LLVM, Clang для реверсинга
 
Последнее редактирование модератором:

mak

Соломенные сандалии
Администратор
Сообщения
803
Реакции
576
@ChVL, Привет,

об этом стоит написать сюда - https://github.com/nblog/Vm2Import/issues, как вариант можно сделать отдельную длл с экспортом для подключения в свой плагин, делать метки "VM_Start" из сформированного MAP файла, добавить в свой плагин или попросить и написать в issues, чтобы добавили свою функцию поиска всех VM_Start и уже далее меню выбора в виде чекбокса, какие обрабатывать, а какие нет. Поиск VM_Start должен быть базовым функционалом в подобных плагинах, так было всегда. Виртуальная функция логически та же процедура, тогда возникает вопрос, без вм я тоже могу восстановить всю обфускацию IAT только по одной функции?!

Может только то, что входит в IAT? - Но как-то не логично...
Это логично, при условии, что мы знаем в киких виртуальных фунциях есть вызов АПИ, кроме этого нужно сопоставить "VM_Start" и Call Graph c результатами покрытия ВМ, что двойная работа, т.е. нужно проверять каждую функцию отдельно. Теоретически сопоставление можно сделать в Иде, посмотри топик - VMProtect Windows API Address Decoder (IDA Pro - Python), но предварительно лучше иметь очищенный код от мусора.

Проект Vm2Import начинался как концепт, поэтому указать на такой функционал автору - это дело чести (y)

В теме VTIL (Virtual-machine Translation Intermediate Language) есть ещё
Ещё одна утилита на базе VTIL:

vmpdump
A dynamic VMP dumper and import fixer, powered by VTIL.
 
  • Понравилось
Реакции: ChVL

ChVL

Зарегистрированный
Сообщения
7
Реакции
11
Тема выглядит заброшенной, но самое интересное то, что 4 марта был задан вопрос именно о том, что Вы сейчас обозначили: " please provide full source code to automate it with x64dbg plugin for all the calls and jmp to obfuscated import calls." Жаль, что нет никакой реакции и, похоже, не дождёмся. Пессимизм добавляет нулевой результат поисков хоть чего-то по Vm2Import. Так что придётся искать и протаптывать другой путь реанимации дампа после убийства ВМ.

vmpdump смотрел, но там изначально всё заточено " for VMProtect 3.X x64. "
 

mak

Соломенные сандалии
Администратор
Сообщения
803
Реакции
576
@ChVL, автор и ранее редко заходил, можно написать для тусовки и ждать ответа.
 

ChVL

Зарегистрированный
Сообщения
7
Реакции
11
GH VMProtect 3 Import Fixer 1.0.1 x86 & x64

The import protection feature from VMProtect makes the process of recovering the imports difficult. This tool makes it easier. It goes through all the calls to imported functions and fixes them.

You just need to open it, insert the process and the module names and wait until it finishes. After that, just copy the new IAT start and size to your favourite import reconstructor tool and rebuild the PE file.

По этому описанию сабж обещает именно то, чего не хватает в развитии Vm2Import. Потестим.

Скачать можно отсюда: https://www.soft9.ru/App/GH_VMProtect_3_Import_Fixer_1.0.1.rar

Нашёл на сайте Guided Hacking https://guidedhacking.com
Cкачивать оттуда на халяву не дают, пришлось дотировать и перезалить. Есть возможность сделать ещё 14 скачиваний - сообщите, кому что надо. Сайт может быть интересен специалистам по игрушкам, но есть и общие разделы по хакингу, такие как tools и tutorials. Видел, например, это:
The Guided Hacking Injector is the best DLL injector, it has a very rich feature set and is frequently updated. Our injector has over 40,000 downloads and has been thoroughly tested.
 

mak

Соломенные сандалии
Администратор
Сообщения
803
Реакции
576
ZVM - пакет для изучения и практики по VMP2, сорсы и пример, док на Драконском.
 

Прикрепленные файлы:

mak

Соломенные сандалии
Администратор
Сообщения
803
Реакции
576
VmpGetHWID - может быть полезен
 

Прикрепленные файлы:

mak

Соломенные сандалии
Администратор
Сообщения
803
Реакции
576
Плагин и Сорсы для OllyDBG, цель VMP2 - Unpacking VMProtect With ODPlugin
Для просмотра содержимого вам необходимо Войти в систему.
 

mak

Соломенные сандалии
Администратор
Сообщения
803
Реакции
576

Прикрепленные файлы:

plutos

_Вечный_Студент_
Мудрец
Сообщения
146
Реакции
623
можно добавить гитсорсы ещё - https://githacks.org/vmp2
Так там же ссылка на github на четвертой строчке в самом верху страницы:
Download link: VMProtect 2 Reverse Engineering

может у кого-нибудь есть binaries or sources, которые он испoльзует для примеров?
Его _xeroxz@back.engineer не отвечает, и tweeter message принимает...
 
Последнее редактирование:

plutos

_Вечный_Студент_
Мудрец
Сообщения
146
Реакции
623
в статье про VMProtect 2 (см. ссылку выше) автор пишет:

It can be difficult to determine what code is deadstore and what code is required, however if you select a register in ida and look at all the places it is written to prior to the instruction you are looking at, you can remove all of those other writing instructions up until there is a read of said register.

Вопрос: как это сделать в IDA? Искал, но все что-то не про то...
 
Последнее редактирование:

elpy

Зарегистрированный
Сообщения
5
Реакции
3
в стаье про VMProtect 2 (см. ссылку выше) автор пишет:

It can be difficult to determine what code is deadstore and what code is required, however if you select a register in ida and look at all the places it is written to prior to the instruction you are looking at, you can remove all of those other writing instructions up until there is a read of said register.

Вопрос: как это сделать в IDA? Искал, но все что-то не про то...
в IDA нельзя удалить байты
можно, выделив строки с мусорными инструкциями, свернуть их Ctrl+Numpad-
можно просто занопить
 

plutos

_Вечный_Студент_
Мудрец
Сообщения
146
Реакции
623
в IDA нельзя удалить байты
не понял. Где я спрашиваю про "удаление байтов"?
Вы мой вопрос читали? Если читали, то поняли?

My question:
how to select a register in ida and look at all the places it is written to prior to the instruction you are looking at.
 
Последнее редактирование:

machine

Зарегистрированный
Сообщения
3
Реакции
0
Исследование кода VMProtect. Часть 1. Патч хешей.
Здравствствуйте djeck, в туториале написано что в архиве имеется отладчик ollydbg (пропатченный) с скриптами, а его там нет...
Хотелось бы использовать теже инструменты как в статье (для чистоты эксперимента).
 

plutos

_Вечный_Студент_
Мудрец
Сообщения
146
Реакции
623
VMProtect 2 virtual instruction assembler (vmassembler) v1.2 is now public.
You can now assemble any virtual instructions defined by vmprofiler and execute them inside of your own applications!

_xeroxz have also added label support to the assembler: here
 
Последнее редактирование:

plutos

_Вечный_Студент_
Мудрец
Сообщения
146
Реакции
623
Quick look around VMP 3.x - Part 3
В этой серии статей, если я правильно понял, автор накрывает свои sample files VMP 3.x и потом исследует результат.
Смотреть пассивно на screenshots как-то скучно, да и непонятно порой что откуда берется.

Я взял свой sample, простую программку на "С", вставил маркеры и накрыл. Но мои результаты какие-то совсем другие, мало похожие на результаты из статьи.

Так вот, собственно вопрос:
кто-нибудь видел оригинальные исходные файлы, над которыми автор экспериментирует?
Может в самой статье есть ссылка, которую я проглядел?
Или, есть ли способ самому создать "исходный файл", путем максимального приближения наугад к тому, что автор мог иметь?
Заранее спасибо!
 
Последнее редактирование:
Верх Низ