• This repository has been archived on 29/Sep/2020
  • Stars
    star
    262
  • Rank 155,521 (Top 4 %)
  • Language
    C
  • License
    MIT License
  • Created about 6 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A library to read/write memory to Windows on KVM

A library to read/write memory to Windows running inside of KVM

End-of-life

This library is not supported anymore. Please use memflow for more up-to-date and versatile VM introspection tools.

wintools.h and mem.h provide most of the functions callable to interract with the Windows VM, while hlapi abstracts everything in a bit simpler to use manner (requires C++).

Rust bindings are available in a separate repository.

Compiling

Minimum language standard: C99 The current example project is in C++, requiring at least C++11 with template support, but the C version also exists, which works fine on a C99 compiler.

Use meson and ninja to compile the example programs

Use make to compile the kernel module

Performance

Internal (QEMU inject) mode is roughly 5 times faster than external mode. However, it is possible to use the kernel module to map the memory space of QEMU into the external process, mitigating the performance penalty. Also, when performing larger reads, the memcpy quickly reaches its peak speed and external mode begins to catch up. Performance numbers are shown below.

alt text

Frequent issues

Make sure to use the Q35 chipset on the KVM guest, unless it is running Windows XP. Otherwise, the library may not work correctly. Kmod mapping is not guaranteed to work properly or for extended periods of time if the VM is not set up to use hugepages.

Licensing note

While most of the codebase is under the MIT license, the kernel module (kmem.c file) is licensed under GNU GPLv2.

More Repositories

1

cglue

Rust ABI safe code generator
Rust
181
star
2

UNet-Controller

A CharacterController based controller for Unity's new Networking system
C#
94
star
3

ofps

Optical Flow Processing Stack
Rust
71
star
4

Unity-Graphics-Demo

This is a project demonstrating the capabilities of the Unity 3D engine. Everything is taken from all over the place. Links to the original owners are provided.
C#
66
star
5

m0dular-csgo

A performance optimized CSGO HvH hack
C
53
star
6

vaclog

C
48
star
7

kvm_explorer

C++
39
star
8

m0dular

C++
35
star
9

kvm-rdtsc-hack

Kernel module to evade KVM's detection through RDTSC timer
C
30
star
10

kallsyms-mod

Access to kallsyms_lookup_name through the use of kernel livepatch interface
C
24
star
11

Nuklear-Node-Editor

Node editor for Nuklear immediate mode GUI toolkit
C
20
star
12

ctti

Rust compile-time type information experiment
Rust
18
star
13

kernel-hook

Linux kernel hooking library
C
17
star
14

vmread-rs

Rust bindings for vmread
Rust
14
star
15

side-channels

Rust
12
star
16

docker-rosetta2

Run amd64 containers under Rosetta 2 on Apple Silicon machines
Shell
9
star
17

memflow-applied

Memflow 0.1.0 tutorials
Rust
8
star
18

m0dular-source-sdk

Source SDK for m0dular framework
C++
6
star
19

Instanced-Foliage

C#
6
star
20

csgo-linux-preload

A simple library preloader at the right time for CSGO Linux
C
5
star
21

dragonskulle

Online 3D Strategy Game Made With Vulkan+Java
Java
5
star
22

rayon-tlsctx

Thread local variables for Rayon thread pools
Rust
4
star
23

asciirend

Generic no_std compatible ascii renderer
Rust
4
star
24

unitree-docker

Unofficial docker container for unitree robotics ROS setup
Dockerfile
4
star
25

systemc

SystemD for ComputerCraft
Lua
4
star
26

vimrc

My rather light vim config
Vim Script
3
star
27

linux-mmap

C
3
star
28

Inventory-System

C#
3
star
29

talks

Various DMA talks for Uni, and maybe more?
HTML
2
star
30

mkimg

Simple tool to create raw disk images
Rust
2
star
31

django-blog

Personal blog website written in Python+Django
Python
2
star
32

resolve-amdocl-fix

Fixes an issue with an OpenCL extension misbehaving in AMDs implementation.
C
2
star
33

pwned2-simulation

Solution for pwnEd 2 CTF "simulation" challenge
Rust
2
star
34

configs

Vim Script
1
star
35

m0dular-menu

C++
1
star
36

Centre-Switch

C#
1
star
37

dominecraft

Java
1
star
38

vector-trees

Vector backed AVL and B-Trees in Rust
Rust
1
star
39

uob-java

Java assignments for 2019 freshers of University of Birmingham.
Java
1
star
40

tarc

Transposable, type-erasable, and FFI-safe Arc
Rust
1
star
41

dysonsphere

Allows to choose which star to get from the stardust treasury
TypeScript
1
star
42

libmv

Fork of Libmv from https://developer.blender.org/tag/libmv/ with minimal patches
C++
1
star