All Projects → mythril-hypervisor → Mythril

mythril-hypervisor / Mythril

Licence: mit
A hypervisor written in rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Mythril

Asm Cli
Interactive shell of assembly language(X86/X64) based on unicorn and keystone
Stars: ✭ 211 (+390.7%)
Mutual labels:  intel, x86-64
Svm kernel
x86_64 AMD kernel optimized for performance & hypervisor usage
Stars: ✭ 32 (-25.58%)
Mutual labels:  x86-64, hypervisor
Zydis
Fast and lightweight x86/x86-64 disassembler and code generation library
Stars: ✭ 2,168 (+4941.86%)
Mutual labels:  intel, x86-64
uvmm
Virtual machine monitor for L4Re
Stars: ✭ 22 (-48.84%)
Mutual labels:  x86-64, hypervisor
x86-Assembly-Reverse-Engineering
🛠 Knowledge about the topic of x86 assembly & disassembly 🛠
Stars: ✭ 27 (-37.21%)
Mutual labels:  x86-64, intel
The holy book of x86
A simple guide to x86 architecture, assembly, memory management, paging, segmentation, SMM, BIOS....
Stars: ✭ 577 (+1241.86%)
Mutual labels:  intel, x86-64
Beaengine
BeaEngine disasm project
Stars: ✭ 342 (+695.35%)
Mutual labels:  intel, x86-64
Ksm
A fast, hackable and simple x64 VT-x hypervisor for Windows and Linux. Builtin userspace sandbox and introspection engine.
Stars: ✭ 673 (+1465.12%)
Mutual labels:  x86-64, hypervisor
Awesome Virtualization
Collection of resources about Virtualization
Stars: ✭ 846 (+1867.44%)
Mutual labels:  hypervisor
Freertos Cell
FreeRTOS for Jailhouse Cells
Stars: ✭ 31 (-27.91%)
Mutual labels:  hypervisor
Hypervisor
lightweight hypervisor SDK written in C++ with support for Windows, Linux and UEFI
Stars: ✭ 934 (+2072.09%)
Mutual labels:  hypervisor
Minos
A minimal bare bones operating system based on a monolithic kernel design written purely in Assembly language
Stars: ✭ 12 (-72.09%)
Mutual labels:  intel
Beelzebub
The Lord of Flies - A hobby operating system
Stars: ✭ 24 (-44.19%)
Mutual labels:  x86-64
Keypatch
Multi-architecture assembler for IDA Pro. Powered by Keystone Engine.
Stars: ✭ 939 (+2083.72%)
Mutual labels:  x86-64
Papers
My presentations and papers
Stars: ✭ 40 (-6.98%)
Mutual labels:  intel
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (-41.86%)
Mutual labels:  x86-64
Sixtyfour
How fast can we brute force a 64-bit comparison?
Stars: ✭ 41 (-4.65%)
Mutual labels:  x86-64
Seq.asm
Minimal implementation of UNIX seq command in x86_64 assembly.
Stars: ✭ 37 (-13.95%)
Mutual labels:  x86-64
Javassembly
💾 Calling Assembly from Java: simple example using the JNI and NASM.
Stars: ✭ 28 (-34.88%)
Mutual labels:  x86-64
Reko
Reko is a binary decompiler.
Stars: ✭ 942 (+2090.7%)
Mutual labels:  x86-64

mythril

A rust-based hypervisor currently requiring multiboot2 boot (e.g. grub), and VT-x/EPT.

Building and Testing

Don't forget to clone using --recurse-submodules or if you've already cloned git submodule update --init --recursive to get the dependencies.

mythril should be built and tested using the provided docker image adamschwalm/hypervisor-build. There are convenience make rules for using this image. For example, to build the multiboot application, run:

make docker-all

This will create the hypervisor in mythril/target/mythril_target/release/mythril. It will also compile the patched versions for seabios and the linux kernel that are currently required to use mythril. Unittests can be executed like:

make docker-test

Running the Hypervisor

After running the build steps as described above, the hypervisor can be executed with:

make docker-qemu

Note that this has only been tested on relatively recent versions of QEMU (v4.1.0+). Older versions may contain bugs that could cause issues running the image.

Debugging

To debug mythril, run BUILD_TYPE=debug make qemu-debug. This will build a debug version of the hypervisor then start start QEMU in a paused state. You can then run gdb mythril/target/mythril_target/debug/mythril to launch gdb with the debug info from the application. You can attach to the qemu instance with target remote :1234. Note that debugging the hypervisor is generally not supported under docker.

Because the virtualization is hardware accelerated, remember to use hbreak instead of break in gdb. For example, to put a breakpoint at the start of kmain and start mythril, run:

(gdb) target remote :1234
Remote debugging using localhost:1234
0x000000000000fff0 in ?? ()
(gdb) hbreak kmain
Hardware assisted breakpoint 1 at 0x110d54: file mythril_multiboot2/src/main.rs, line 151.
(gdb) continue
Continuing.

Breakpoint 1, kmain (multiboot_info_addr=10993664) at mythril_multiboot2/src/main.rs:151
151	   unsafe { interrupt::idt::init() };

You can then use step and other debugging functions as usual.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].