MCPcopy Create free account
hub / github.com/0xnobody/vmpattack

github.com/0xnobody/vmpattack @v0.2-wip

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2-wip ↗ · + Follow
147 symbols 253 edges 36 files 111 documented · 76% updated 5y agov0.2-wip · 2020-08-23★ 4574 open issues

Browse by type

Functions 116 Types & classes 31
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

VMPAttack

alt text A Work-In-Progress VMP to VTIL lifter. Works for VMProtect 3.X x64.

Usage

Literally drag + drop the unpacked victim file onto VMPAttack.exe. Lifted VTIL routines will appear in a folder named "VMPAttack-Output".

Advanced Usage

All lifting functionality depends on the vmpattack root class object. This object can easily be constructed using a byte vector of the target image. You can lift any routine manually by passing the VMEntry RVA and entry stub value in a lifting_job structure to the vmpattack::lift function.

alt text

lifting_jobs can be automatically generated by providing the RVA of the entry stub (see above) to the vmpattack::analyze_entry_stub function.

Example usage: ```C++ std::vector buffer = read_file( file_path );

vmpattack instance( buffer );

if ( auto result = instance.analyze_entry_stub( my_rva ) )
{
    if ( auto routine = instance.lift( result->job ) )
    {
        vtil::optimizer::apply_all_profiled( *routine );
        vtil::save_routine( *routine, "C:\\my_routine.vtil" );
    }
}

```

Building

Building in VS is as simple as replacing the include/library directories to VTIL/Keystone/Capstone in the vcxproj.

The project now also universally supports CMake and platforms other than Windows.

The project requires C++20.

Issues

Stability is the main issue. Sometimes the lifter or optimizer can hang unexpectedly, or fail to lift certain branches. The lifter also does not currently handle switch tables.

Licence

Licensed under the GPL-3.0 License. No warranty is provided of any kind.

Core symbols most depended-on inside this repo

Shape

Method 108
Class 27
Function 8
Enum 4

Languages

C++100%

Modules by API surface

VMPAttack/analysis_context.hpp41 symbols
VMPAttack/vm_analysis_context.hpp12 symbols
VMPAttack/vmpattack.cpp9 symbols
VMPAttack/instruction.hpp7 symbols
VMPAttack/vmentry.hpp6 symbols
VMPAttack/vm_instruction_desc.hpp6 symbols
VMPAttack/vm_instruction_info.hpp5 symbols
VMPAttack/instruction_stream.hpp5 symbols
VMPAttack/disassembler.hpp5 symbols
VMPAttack/vm_instance.cpp4 symbols
VMPAttack_Tester/VMPAttack_Tester.cpp3 symbols
VMPAttack/vm_state.hpp3 symbols

For agents

$ claude mcp add vmpattack \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page