vmnet.framework support for rootless QEMU (without patching QEMU)

Overview

vde_vmnet: vmnet.framework support for rootless QEMU

vde_vmnet provides vmnet.framework support for VDE applications such as QEMU.

vde_vmnet does not require QEMU to run as the root user.

(But vde_vmnet itself has to run as the root, in most cases.)

Install

Requires macOS 10.15 or later.

Step 1: Install vde-2 (vde_switch)

The version of vde-2 must be commit 50964c3f (2021-08-31) or later.

The --prefix dir below does not necessarily need to be /opt/vde, however, it is highly recommended to set the prefix to a directory that can be only written by the root.

Note that /usr/local is typically chowned for a non-root user on Homebrew environments, so /usr/local is not an appropriate prefix.

git clone https://github.com/virtualsquare/vde-2.git
cd vde-2
autoreconf -fis
./configure --prefix=/opt/vde
make
sudo make install

Step 2: Install vde_vmnet

git clone https://github.com/lima-vm/vde_vmnet
cd vde_vmnet
make PREFIX=/opt/vde
sudo make PREFIX=/opt/vde install

The following files will be installed:

  • /opt/vde/bin/vde_vmnet
  • /Library/LaunchDaemons/io.github.virtualsquare.vde-2.vde_switch.plist
  • /Library/LaunchDaemons/io.github.lima-vm.vde_vmnet.plist
    • Configured to use 192.168.105.0/24. Modifiy the file if it conflicts with your local network.

See "Testing without launchd" if you don't prefer to use launchd.

Usage

qemu-system-x86_64 \
  -device virtio-net-pci,netdev=net0 -netdev vde,id=net0,sock=/var/run/vde.ctl \
  -m 4096 -accel hvf -cdrom ubuntu-21.04-desktop-amd64.iso

The guest IP is assigned by the DHCP server provided by macOS.

The guest is accessible to the internet, and the guest IP is accessible from the host.

To confirm, run sudo apt-get update && sudo apt-get install -y apache2 in the guest, and access the guest IP via Safari on the host.

Lima integration

See https://github.com/lima-vm/lima/blob/master/docs/network.md to learn how to use vde_vmnet with Lima.

Multi VM

Multiple VMs can be connected to a single vde_vmnet instance.

Make sure to specify unique MAC addresses to VMs: -device virtio-net-pci,netdev=net0,mac=de:ad:be:ef:00:01 .

NOTE: don't confuse MAC addresses of VMs with the MAC address of vde_vmnet itself that is printed as vmnet_mac_address in the debug log. You do not need to configure (and you can't, currently) the MAC address of vde_vmnet itself.

Bridged mode

Run sudo make install BRIDGED=en0.

The following additional files will be installed:

  • /Library/LaunchDaemons/io.github.virtualsquare.vde-2.vde_switch.bridged.en0.plist
  • /Library/LaunchDaemons/io.github.lima-vm.vde_vmnet.bridged.en0.plist

Use /var/run/vde.bridged.en0.ctl as the VDE socket path.

Advanced usage

Testing without launchd

make

make install.bin
vde_switch --unix /tmp/vde.ctl
sudo vde_vmnet --vmnet-gateway=192.168.105.1 /tmp/vde.ctl

Note: make sure to run vde_vmnet with root (sudo). See FAQs for the reason. vde_switch does not need to be executed as root.

PTP mode (Switchless mode)

  • Pros: doesn't require the vde_switch process to be running
  • Cons: Only single QEMU process can connect to the socket. Multiple vde_vmnet processes need to be launched for multiple QEMU processes.

To enable PTP mode, append [] to the socket path argument of vde_vmnet.

sudo vde_vmnet /tmp/vde.ptp[]

QEMU has to be launched with port=65535 without [].

qemu-system-x86_64 -netdev vde,id=net0,sock=/tmp/vde.ptp,port=65535 ...

The "port" number here has nothing to do with TCP/UDP ports.

FAQs

Why does vde_vmnet require root?

Running vde_vmnet without root could be possible by signing the vde_vmnet binary with com.apple.vm.networking entitlement.

However, signing a binary with com.apple.vm.networking entitlement seems to require some contract with Apple. 😞

This entitlement is restricted to developers of virtualization software. To request this entitlement, contact your Apple representative.

https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_vm_networking

Is it possible to run vde_vmnet with SETUID?

Yes, but discouraged, as it allows non-root users to write arbitrary files, by specifying certain CLI args and environment variables.

Instead, consider using launchd or sudo.

See ./etc_sudoers.d/vde_vmnet to allow running sudo vde_vmnet with reduced set of args and environment variables.

How is vde_vmnet related to QEMU-builtin vmnet support?

There are proposal to add builtin vmnet support for QEMU:

However, QEMU-builtin vmnet is highly likely to require running the entire QEMU process as root.

On the other hand, vde_vmnet does not require the entire QEMU process to run as root, though vde_vmnet has to run as root.

How to use static IP addresses?

When --vmnet-gateway=IP is set to "192.168.105.1", the whole subnet (192.168.105.2-192.168.105.254) is used as the DHCP range.

To use static IP addresses, limit the DHCP range with --vmnet-dhcp-end=IP.

For example, --vmnet-gateway=192.168.105.1 --vmnet-dhcp-end=192.168.105.100 allows using 192.168.105.101-192.168.105.254 as non-DHCP static addresses.

How to reserve DHCP addresses?

  • Decide a unique MAC address for the VM, e.g. de:ad:be:ef:00:01.

  • Decide a reserved IP address, e.g., "192.168.105.100"

  • Create /etc/bootptab like this. Make sure not to drop the "%%" header.

# bootptab
%%
# hostname      hwtype  hwaddr              ipaddr          bootfile
tmp-vm01        1       de:ad:be:ef:00:01   192.168.105.100
  • Reload the DHCP daemon.
sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/bootps.plist
sudo /bin/launchctl load -w /System/Library/LaunchDaemons/bootps.plist
  • Run QEMU with the MAC address: -device virtio-net-pci,netdev=net0,mac=de:ad:be:ef:00:01 .

NOTE: don't confuse MAC addresses of VMs with the MAC address of vde_vmnet itself that is printed as vmnet_mac_address in the debug log. You do not need to configure (and you can't, currently) the MAC address of vde_vmnet itself.

Links

Troubleshooting

  • Set environment variable DEBUG=1
  • See /var/run/vde_vmnet.{stdout,stderr} (when using launchd)
Comments
  • Networking speeds are slow, is this expected?

    Networking speeds are slow, is this expected?

    Firstly, kudos to this project, it has saved me hours of fiddling with networking myself. I couldn't get the tap and bridge stuff working using older guides and found this when Limactl hit the top of HN.

    This isn't a complaint more a expectations check.

    I've a 400mbit internet connection and generally see downloads of 10+MB/s. I followed the guide to get networking on qemu on MacOSX working and buil the tool using the latest master branch (current top commit 14e1c9e06f4dbdddc6fe4e85fc72a1d583b049ad) and am seeing downloads of this:

    72.2 kB/s 19min 46s while doing an apt-get of various libraries.

    So the question is, is there anything that can be done to speed this up? or is this expected behaivor?

    Below is the qemu script I use to start my VM:

    qemu-system-x86_64 \
      -m 8G \
      -vga virtio \
      -display default,show-cursor=on \
      -usb \
      -device usb-tablet \
      -machine type=q35,accel=hvf \
      -smp 4 \
      -device virtio-net-pci,netdev=net0 -netdev vde,id=net0,sock=/var/run/vde.ctl \
      -drive file=./disks/ubuntu.qcow2,if=virtio \
      -cpu Nehalem
    

    I should note that iperf3 showed speeds of 41mbits from the MacOS host and this VM.

    output of configure:

    Configure results:
    
     - VDE CryptCab............ disabled
     + VDE Router.............. enabled
     - TAP support............. disabled
     + pcap support............ enabled
     - Experimental features... disabled
     - Profiling options....... disabled
    
    opened by gigatexal 7
  • [vde_switch] No buffer space available

    [vde_switch] No buffer space available

    Lima Version: 0.6

    For creating a local k8s cluster I started two instance with --vmnet-mode=bridged specified for networking. After the initialization (by Kubeadm) of control-plane, node instance was expected to join the cluster.

    Howerver, node instance kept stuck into NoReady status and I found the console of vde_switch kept printing "vde_switch: send_sockaddr port 3: No buffer space available".

    I tried to increase wmem_max using:

    echo 83886080 | sudo tee /proc/sys/net/core/wmem_max
    

    But nothing resolved.

    I wonder if this is a bug?

    $ sudo vde_vmnet --vmnet-mode=bridged --vmnet-interface=en0 /tmp/vde.ctl
    Initializing vmnet.framework (mode 1002)
    Using network interface "en0"
    * vmnet_mtu: 1500
    * vmnet_interface_id: CD65D0DC-6BC7-4E0F-9F31-FD8A255DDD3E
    * vmnet_max_packet_size: 1514
    * vmnet_mac_address: 72:7e:fd:a5:36:a7
    
    $ vde_switch
    vde_switch: send_sockaddr port 3: No buffer space available
    vde_switch: send_sockaddr port 3: No buffer space available
    vde_switch: send_sockaddr port 3: No buffer space available
    vde_switch: send_sockaddr port 3: No buffer space available
    
    help wanted 
    opened by yuchanns 6
  • Installing vde via brew doesn't work

    Installing vde via brew doesn't work

    Or at least it didn't work for me.

    I believe it is due to being installed as a symlink owned by my user instead of by root:

    # ls -l vde_switch
    lrwxr-xr-x  1 jan  admin  36 14 May 16:00 vde_switch -> ../Cellar/vde/2.3.2_1/bin/vde_switch
    

    launchd refuses to load it:

    (io.github.virtualsquare.vde-2.vde_switch.plist[5719]): Could not find and/or execute program specified by service: 13: Permission denied: /usr/local/bin/vde_switch
    

    It started working after I replaced the symlink with the file itself:

    # ls -l vde_switch
    -r-xr-xr-x  1 root  staff  94904 29 Jul 10:48 vde_switch
    

    Could probably have just changed the owner of the symlink itself, but didn't test it yet.

    documentation question 
    opened by jandubois 4
  • Cross-compile vde_vmnet for ARM target

    Cross-compile vde_vmnet for ARM target

    $ CFLAGS="-target arm64-macos" LDFLAGS="-target arm64-macos" make
    cc -target arm64-macos -DVERSION=\"v0.1.0\" -c cli.c -o cli.o
    cc -target arm64-macos -DVERSION=\"v0.1.0\" -c main.c -o main.o
    cc -target arm64-macos -DVERSION=\"v0.1.0\" -o vde_vmnet -target arm64-macos -lvdeplug -framework vmnet  cli.o  main.o
    ld: warning: ignoring file /usr/local/lib/libvdeplug.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
    Undefined symbols for architecture arm64:
      "_vde_close", referenced from:
          _main in main.o
      "_vde_open_real", referenced from:
          _main in main.o
      "_vde_recv", referenced from:
          _main in main.o
      "_vde_send", referenced from:
          __on_vmnet_packets_available in main.o
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make: *** [vde_vmnet] Error 1
    
    enhancement 
    opened by AkihiroSuda 4
  • vde_switch consistent program path

    vde_switch consistent program path

    i believe these were missed in this commit: https://github.com/lima-vm/vde_vmnet/commit/b3c2d6ad8e2508db5b80a4ce04b161f006d34b72

    maybe? while trying to troubleshoot why these services won't start on my machine it seemed like a minor thing to fix 🤷

    opened by flyinprogrammer 3
  • Build an installer that can be installed as a brew cask

    Build an installer that can be installed as a brew cask

    Homebrew casks are just wrappers around regular macOS installers (typically *.dmg or *.pkg), that can install anywhere, and that can require sudo during installation.

    We need an installer that can take the tarball created by #22 and install it into /opt/vde.

    Let's find out if we can use an installer script with just a tarball instead of a full-blown DMG or PKG installer.

    We should probably also create our own tap to host the cask, at least initially.

    enhancement 
    opened by jandubois 3
  • Security Policy violation SECURITY.md

    Security Policy violation SECURITY.md

    This issue was automatically created by Allstar.

    Security Policy Violation Security policy not enabled. A SECURITY.md file can give users information about what constitutes a vulnerability and how to report one securely so that information about a bug is not publicly visible. Examples of secure reporting methods include using an issue tracker with private issue support, or encrypted email with a published key.

    To fix this, add a SECURITY.md file that explains how to handle vulnerabilities found in your repository. Go to https://github.com/lima-vm/vde_vmnet/security/policy to enable.

    For more information, see https://docs.github.com/en/code-security/getting-started/adding-a-security-policy-to-your-repository.


    This issue will auto resolve when the policy is in compliance.

    Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

    allstar 
    opened by allstar-app[bot] 2
  • Security Policy violation Branch Protection

    Security Policy violation Branch Protection

    This issue was automatically created by Allstar.

    Security Policy Violation PR Approvals not configured for branch master


    This issue will auto resolve when the policy is in compliance.

    Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

    allstar 
    opened by allstar-app[bot] 2
  • release.yml: Release tarball with GitHub Actions

    release.yml: Release tarball with GitHub Actions

    This PR contains:

    • YAML file for GitHub Actions to automatically release precompiled FAT binary (supports both x86_64 and arm64) when commits with specific tag name were pushed to the repository.

    closes: https://github.com/lima-vm/vde_vmnet/issues/5 closes: https://github.com/lima-vm/vde_vmnet/issues/22


    Signed-off-by: KOSHIKAWA Kenichi <reishoku.misc ~~at~~ pm.me>

    opened by reishoku 2
  • sudoers entries should be prefixed with a digest spec

    sudoers entries should be prefixed with a digest spec

    Allowing password-less execution of /usr/local/bin/vde_vmnet as root is a vulnerability when the user has non-sudo write access to /usr/local/bin (which is typically the case when using homebrew), because they could simply replace vde_vmnet with any other command or script and then execute that under root.

    This can be mitigated by including a checksum of the executable in the sudo rule, e.g.

    $ sha256sum /usr/local/bin/vde_vmnet
    cabb4c8bac4a2923a1feb21f597ae6c8145de25e44f408b75ec254da6ffa09ce  /usr/local/bin/vde_vmnet
    

    should lead to a rule such as (untested):

    %staff ALL=(root:root) NOPASSWD:NOSETENV: sha256:cabb4c8bac4a2923a1feb21f597ae6c8145de25e44f408b75ec254da6ffa09ce /usr/local/bin/vde_vmnet --vmnet-gateway=192.168.105.1 /var/run/vde.ctl
    
    documentation 
    opened by jandubois 2
  • Cross-compilation settings for arm-apple-darwin (

    Cross-compilation settings for arm-apple-darwin ("M1 Macs")

    This patch enables cross-compilation of vde_vmnet along with vde_switch for arm64-apple-darwin (so-called "M1 Macs") on x86_64-apple-darwin (so-called "Intel Macs").


    At least on my environment, working steps to cross-compile are as follows:

    1. (optional? not clear) Install Xcode (not Xcode Command Line Tools)
    2. git clone https://github.com/virtualsquare/vde-2.git
    3. cd vde-2
    4. export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
    5. export CC=$(xcrun --sdk macosx --find clang)
    6. export CXX=$(xcrun --sdk macosx --find clang++)
    7. export CFLAGS="-arch arm64e -isysroot $SDKROOT -Wno-error=implicit-function-declaration"
    8. export CXXFLAGS=$CFLAGS
    9. ./configure --prefix=/opt/vde --host=arm-apple-darwin --target=arm-apple-darwin --build=x86_64-apple-darwin
    10. make -j3 V=1
    11. sudo make install PREFIX=/opt/vde
    12. git clone https://github.com/lima-vm/vde_vmnet
    13. cd vde_vmnet
    14. make -j3 PREFIX=/opt/vde
    15. sudo make PREFIX=/opt/vde install
    16. Done.

    Logs:

    reishoku@Jasmine ~/D/v/vde_vmnet (master)> uname -a
    Darwin Jasmine.local 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:23 PDT 2021; root:xnu-8019.41.5~1/RELEASE_X86_64 x86_64
    
    reishoku@Jasmine ~/D/v/vde_vmnet (master)> file /opt/vde/bin/*
    /opt/vde/bin/dpipe:        Mach-O 64-bit executable arm64e
    /opt/vde/bin/unixcmd:      Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_autolink: Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_over_ns:  Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_pcapplug: Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_plug:     Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_plug2tap: Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_router:   Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_switch:   Mach-O 64-bit executable arm64e
    /opt/vde/bin/vde_vmnet:    Mach-O 64-bit executable arm64e
    /opt/vde/bin/vdecmd:       Mach-O 64-bit executable arm64e
    /opt/vde/bin/vdeterm:      Mach-O 64-bit executable arm64e
    /opt/vde/bin/wirefilter:   Mach-O 64-bit executable arm64e
    
    opened by reishoku 1
  • Unable to ping VM host (lima/colima)

    Unable to ping VM host (lima/colima)

    I setup networking for lima/colima a few weeks ago and it had been working fine, but today, even after some troubleshooting, I can not ping the colima VM from my host. I have updated lima, colima, and macOS with patch releases lately, so that might be related, but I am not really sure what to check at this point.

    On the mac I can see this:

    bridge100: flags=8a63<UP,BROADCAST,SMART,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    	options=3<RXCSUM,TXCSUM>
    	ether 16:7d:da:6a:3e:64
    	inet 192.168.105.1 netmask 0xffffff00 broadcast 192.168.105.255
    	inet6 fe80::147d:daff:fe6a:3e64%bridge100 prefixlen 64 scopeid 0x14
    	inet6 fdce:1812:ad25:915f:834:c0bf:f47f:b16e prefixlen 64 autoconf secured
    	Configuration:
    		id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
    		maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
    		root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
    		ipfilter disabled flags 0x0
    	member: vmenet0 flags=3<LEARNING,DISCOVER>
    	        ifmaxaddr 0 port 19 priority 0 path cost 0
    	nd6 options=201<PERFORMNUD,DAD>
    	media: autoselect
    	status: **active**
    

    but I can not ping 192.168.105.1

    One the colima VM, I can see this:

    lima0     Link encap:Ethernet  HWaddr 52:55:55:74:18:4D
              inet addr:192.168.105.2  Bcast:0.0.0.0  Mask:255.255.255.0
              inet6 addr: fdce:1812:ad25:915f:5055:55ff:fe74:184d/64 Scope:Global
              inet6 addr: fe80::5055:55ff:fe74:184d/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:158 errors:0 dropped:0 overruns:0 frame:0
              TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:42873 (41.8 KiB)  TX bytes:1720 (1.6 KiB)
    

    and I can ping both 192.168.105.2 and 192.168.105.1

    I'm not sure exactly what the next step would be in figuring out what bit is likely broken.

    Pointers would be much appreciated.

    opened by spkane 1
  • vde_vmnet fails to start when Internet Sharing is active.

    vde_vmnet fails to start when Internet Sharing is active.

    When trying to start vde_vmnet while "Internet Sharing" is active in "System Settings > Sharing > Internet Sharing", vde_vmnet fails to start:

    $ sudo /opt/vde/bin/vde_vmnet --vmnet-gateway=192.168.122.1 /tmp/vde.ctl          
    Initializing vmnet.framework (mode 1001)
    start(): vmnet_return_t 1009
    start: Undefined error: 0
    

    It works after disabling Internet Sharing.

    Perhaps at least document this issue in the README.

    documentation 
    opened by leorochael 0
Releases(v0.6.0)
  • v0.6.0(Mar 24, 2022)

    • Add a git submodule vde-2 (#38, thanks to @Junnplus)
    • Cross compilation for arm64 (#33, #39, thanks to @reishoku @Junnplus)
    • Bump vde-2 to include ENOBUFS fix for vde_switch (#32, thanks to @jandubois)
    • Fix vde_switch path in the launchd files (#35, thanks to @flyinprogrammer)

    Other changes: https://github.com/lima-vm/vde_vmnet/compare/v0.5.2...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Dec 8, 2021)

  • v0.5.1(Sep 15, 2021)

  • v0.5.0(Sep 1, 2021)

    • Changed the default prefix from /usr/local to /opt/vde for better security on Homebrew hosts (#21)
    • Now the launchd files require vde_switch to be 2021-08-31 or later (#21)
    Source code(tar.gz)
    Source code(zip)
  • v0.4.1(Aug 23, 2021)

  • v0.4.0(Aug 2, 2021)

    • Moved the repo: github.com/AkihiroSuda/vde_vmnet -> https://github.com/lima-vm/vde_vmnet (#15)
    • Support --vmnet-dhcp-end, --vmnet-mask (#13)
    • Support --vmnet-interface-id (#14)
    • Explicitly discourage SETUID (#12)
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Jul 29, 2021)

    support --vmnet-gateway=IP, e.g., 192.168.105.1 + drop support for macOS 10.14 (#8)

    vde_vmnet binary itself does not have any default value, but the launchd plist file is updated to use 192.168.105.1 as the default, so as to avoid conflicting with VMware Fusion.

    Fix #7

    Also drop support for macOS 10.14 and older.

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jul 19, 2021)

Owner
Linux Machines
Linux virtual machines, on macOS
Linux Machines
First open source android modding library for Geometry Dash Based on Hooking-and-Patching-android-template

Android-ML First open source android modding library for Geometry Dash Based on Hooking-and-Patching-android-template Installation Download this githu

BlackTea ML 21 Jul 17, 2022
Obfuscate calls to imports by patching in stubs. ICO works on both X86 and X64 binaries.

ICO adds a new section into the image, then begins building stubs for each import that uses a extremely basic routine to decrypt an RVA and places them into the section.

null 43 Dec 15, 2022
A build of sowm that takes the pain from patching away.

sowm-flexipatch A build of sowm that takes the pain from patching away. About Similar to the flexipatch builds made by bakkeby, sowm-flexipatch aims t

Mateo Palacios 7 Jun 26, 2022
A repository for experimenting with elf loading and in-place patching of android native libraries on non-android operating systems.

droidports: A repository for experimenting with elf loading and in-place patching of android native libraries on non-android operating systems. Discla

João Henrique 26 Dec 15, 2022
Sloth 🦥 is a coverage guided fuzzing framework for fuzzing Android Native libraries that makes use of libFuzzer and QEMU user-mode emulation

Sloth ?? Sloth is a fuzzing setup that makes use of libFuzzer and QEMU’s user-mode emulation (qemu/linux-user) on x86_64/aarch64 host to emulate aarch

Chaithu 82 Nov 29, 2022
Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.

Unicorn Engine Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU. Unicorn offers some unparalleled fe

lazymio 1 Nov 7, 2021
QEMU port for t8030

QEMU README QEMU is a generic and open source machine & userspace emulator and virtualizer. QEMU is capable of emulating a complete machine in softwar

null 1.7k Jan 4, 2023
runing qemu in Docker by BOA

myQemu runing qemu in Docker by BOA It currently only supports mipsel configuration, other architectures have not been added yet, please wait for subs

null 20 Nov 9, 2022
A patched QEMU that exposes an interface for LibAFL-based fuzzers

QEMU LibAFL Bridge This is a patched QEMU that exposes an interface for LibAFL-based fuzzers. This raw interface is used in libafl_qemu that expose a

Advanced Fuzzing League ++ 29 Dec 14, 2022
Example virtual PCI devices for QEMU.

QEMU virtual device playground ?? UNDER CONSTRUCTION ?? Chicken or Egg? Development or Exploit..? Description Here are some example of QEMU virtual PC

smallkirby 2 Apr 5, 2022
A test of judging code using qemu

QEMU Judger Test This project was done abandoned 2 months ago, and I can't remember everything very well, so the steps here may be wrong. Setup First,

null 7 Nov 13, 2021
This is an upgrade to the initial TerminalOS source, supporting real hardware other than just QEMU, using GRUB as a bootloader instead of the crappy one i wrote

Terminal OS Author: Maheswaran Date: 20th Nov 2021 PROGRESS Multiboot compilance achieved VGA driver from complete with print_hex, print_dec, printf f

Maheswaran Parameswaran 1 Nov 28, 2021
Add tensilica esp32 cpu and a board to qemu and dump the rom to learn more about esp-idf

qemu_esp32 Add tensilica esp32 cpu and a board to qemu and dump the rom to learn more about esp-idf ESP32 in QEMU. This documents how to add an esp32

null 358 Jan 8, 2023
Filter driver which support changing DPI of mouse that does not support hardware dpi changing.

Custom Mouse DPI Driver 하드웨어 DPI 변경이 불가능한 마우스들의 DPI 변경을 가능하게 하는 필터 드라이버 경고: 해당 드라이버는 완전히 테스트 되지 않았습니다 Install 해당 드라이버는 서명이 되어있지않습니다. 드라이버를 사용하려면 tests

storycraft 4 Sep 23, 2022
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support.

Turbo Vision A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support. I

null 1.4k Dec 31, 2022
A cross-platform,lightweight,scalable game server framework written in C++, and support Lua Script

Current building status Moon Moon is a lightweight online game server framework implement with multithread and multi-luaVM. One thread may have 1-N lu

Bruce 467 Dec 29, 2022
A distribution of the cFS that includes the cfe-eds-framework which includes NASA's core Flight Executive(cFE) and CCSDS Electronic Data Sheets(EDS) support.

core Flight System(cFS) Application Toolkit(cFSAT) - Beta Release A distribution of the cFS that includes the cfe-eds-framework which includes NASA's

OpenSatKit 13 Jul 3, 2022
A cross-platform,lightweight,scalable game server framework written in C++, and support Lua Script

hive Distributed game server framework based on CPP 17 && LUA 5.4 框架(hive)+逻辑(server) 支持跨平台开发(windows,linux,mac) oop模式的lua开发,支持lua热更新 protobuf协议 pbc修改

toney 82 Jan 1, 2023