VMProtect 2 Virtual Instruction Assembler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
_xeroxz 6db8322eda
added vmprofiler v1.5, still needs some work
3 years ago
dependencies added vmprofiler v1.5, still needs some work 3 years ago
src added vmprofiler v1.5, still needs some work 3 years ago
.clang-format added vmprofiler v1.5, still needs some work 3 years ago
.gitignore added source code, gitignore, gitmodules, etc 3 years ago
.gitmodules added vmprofiler v1.5, still needs some work 3 years ago
LICENSE Add LICENSE 3 years ago
README.md Update README.md 3 years ago
vmassembler.sln fixed includes 3 years ago

README.md

vmassembler - VMProtect 2 Virtual Instruction Assembler

vmassembler is a small C++ project which uses flex and bison to parse .vasm files and assemble virtual instructions. The project inherits vmprofiler which is used to identify vm handler's, provide them with a name, immidate value size, and other meta data to aid in assembling virtual instructions.

Contents

The repo contains the following notable folders and files:

  • dependencies/ - vmprofiler is the only dependency for this project...
  • src/ - source code for the vmassembler...
    • compiler.cpp - responsible for encoding and encrypting virtual instructions...
    • parser.cpp - a singleton class which is used in parser.y...
    • parser.y - bison rules for parsing tokens. This contains only a handful of rules...
    • lexer.l - lex rules for the vmassembler...

Usage Requirements

In order to use the virtual instruction assembler you must first have a few values at hand. The required values are listed below:

  • vm_entry rva - relative virtual address to a vm_entry...
  • image base - image base value from optional headers...
  • a path to a vasm file is required...
  • advancement - which way the virtual instruction pointer advances...
  • out path - a path to where the vmasm file will be stored...