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.
vmassembler/README.md

30 lines
1.6 KiB

3 years ago
<div align="center">
<div>
3 years ago
<img src="https://githacks.org/uploads/-/system/project/avatar/370/icon.png"/>
3 years ago
</div>
</div>
3 years ago
# vmassembler - VMProtect 2 Virtual Instruction Assembler
3 years ago
3 years ago
vmassembler is a small C++ project which uses [flex](https://en.wikipedia.org/wiki/Flex_(lexical_analyser_generator)) and [bison](https://www.gnu.org/software/bison/manual/) to parse `.vasm` files and assemble virtual instructions. The project inherits [vmprofiler](https://githacks.org/vmp2/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
3 years ago
The repo contains the following notable folders and files:
3 years ago
* `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...
3 years ago
* `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...
3 years ago
* `image base` - image base value from optional headers...
* a path to a vasm file is required...
3 years ago
* `advancement` - which way the virtual instruction pointer advances...
* `out path` - a path to where the vmasm file will be stored...