Brovan now runs on Android as a third host alongside Windows and Linux. New Brovan android embedding layer. The emulator becomes a NativeAOT shared library driven by a host app rather than a process with a Main: - BrovanAndroidApi - exported C ABI (init, surface, start, input injection, window enumeration, debugger commands). - AndroidWinManager - IDisplayConnection over ANativeWindow, plus IGdiRenderSupport. - AndroidGdiSurface - software rasteriser (lines, rects, ellipses, polygons) into a per-guest-window backbuffer posted via ANativeWindow_lock/ unlockAndPost, white background. - AndroidVulkanWsi and a generator branch - VK_KHR_android_surface instead of Win32/Xcb. - AndroidInput, AndroidLog, AndroidHost, AndroidGuestWindows, JNI shim, Java bindings. - Launcher app: Material 3 library, in-app program import via SAF, settings, on-screen joystick/D-pad/touchpad controls, opt-in developer console wired to the debugger. - build-apk.sh - Unicorn cross-build, linux-bionic-arm64 publish, bundled OpenSSL, APK assembly. Changes to shared emulator code: - Case-insensitive shipped-DLL resolution in GetWindowsLibPath. Import tables say KERNEL32.dll, System32 ships kernel32.dll; broken on any case-sensitive host, and it surfaced as a guest loading zero modules. - GlobalPropertiesToRemove on the generator ProjectReference. Target-shaped properties leaked into the analyzer, csc silently refused to load it (CS8034 is only a warning), and every source generator emitted nothing. - GdiPrimitive.Hwnd. The four EnqueueGdi* helpers already had the guest HWND and dropped it, making per-window compositing impossible. - Program.SplitCommandLine widened to internal for embedders. Windows and Linux behaviour is unchanged; the new paths are gated on the RID or !IsWindows.
A user-mode x86_64 binary emulator for inspecting programs, tracing syscalls, and safely running untrusted software.
What is Brovan?
Brovan is an interactive x86_64 emulator that gives you full control over how programs execute. It can be used to reverse engineer binaries, trace API and system calls, capture network traffic, or run software in an isolated environment without executing it directly on your host CPU.
It is designed to support as much software as possible while remaining a safe, efficient, and high-performance option for running software across Windows and Linux. Brovan is still in early development, so it is not yet fully mature or reliable.
Supported backends:
- Unicorn Engine for cross-platform emulation
- WHP (Windows Hypervisor Platform) for hardware acceleration on Windows
- KVM (Kernel-based Virtual Machine) for hardware acceleration on Linux
Core Features
|
MULTI-FORMAT LOADING Load and execute binaries directly inside the emulator without host installation. PE ELF Memory Dumps Raw Shellcode
|
BROVVULK GRAPHICS LAYER Custom Vulkan translation subsystem handling DXVK calls and game rendering. DXVK DirectX Vulkan Surface
|
|
SYSCALL & API TRACING Inspect execution live to see what functions, DLLs, and kernel calls the program accesses. Kernel Syscalls Symbol Resolving Loaded DLLs
|
NETWORK DUMPING Intercept guest socket traffic and export network activity for payload analysis. Socket Intercept PCAP Capture Traffic Analysis
|
Previews & Demos
Gaming & Graphics (Brovvulk)
Brovan can render guest graphical applications through its Brovvulk translation subsystem. Here is a sample game i had (Deltarune), but it can work on many other games:
|
|
Deltarune Bring-up
|
Binary Execution & Tracing
|
Linux ELF on Windows Running fastfetch cross-platform
|
Syscall Tracing Live logs of API calls and dynamic symbols |
Raw Binaries Executing shellcode and memory dumps |
Network Inspection
|
Network Capture Intercepting guest socket reads and writes |
Traffic Analyzer Viewing dumped PCAPs and payloads |
Documentation & Wiki
Check out the GitHub Wiki for:
- Building from source
- Architecture details
- Command reference and usage guides
- FAQ
Warning
The Releases page may not always have the latest changes.
For the most up-to-date version, build from source instead or use the latest build from GitHub Actions
Credits
Thanks to Iced library for x86_64 disassembly and assembly.
Thanks to Unicorn Engine for the core emulator.
Thanks to my friend GittingHubbers for help with the MLFQ Scheduler.
License
GPL-2.0