Post

BELoader - Browser Extension Loader

BELoader - Browser Extension Loader

Overview

BELoader is a Go reimplementation of stomp, rewritten as a standalone Windows executable with zero runtime dependencies.

Where stomp required Python and a deployment archive, BELoader compiles everything into a single binary — the entire extension folder is embedded at build time via //go:embed. Drop it on the target machine and run it. That’s it.


What it does

BELoader automatically installs a browser extension into Chromium-based browsers by patching the Secure Preferences file offline. It handles:

  • Multi-browser support — Edge, Chrome, Brave, Vivaldi
  • GPO bypass — detects the ExtensionInstallAllowlist from the registry and uses the allowed extension ID and public key if a GPO allowlist is configured
  • Random ID generation — if no GPO is found, generates a valid Chrome-compatible extension ID
  • Secure Preferences patching — correctly recomputes all HMACs including super_mac
  • SID handling — automatically strips the RID from the Windows user SID, matching Chromium’s internal behavior
  • Auto-kills the browser before injecting to avoid file lock conflicts

All of this runs fully offline. No internet connection required after build.


Demo

BELoader injecting a malicious extension into Microsoft Edge, bypassing GPO allowlist.


Build & Usage

1
2
3
git clone https://github.com/Fir3n0x/BELoader.git
cd BELoader
go build -o BELoader.exe .

For a fully static Windows binary:

1
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o BELoader.exe

Running on the target machine:

1
2
3
4
BELoader.exe                  # injects into Edge (default)
BELoader.exe --browser chrome
BELoader.exe --browser brave
BELoader.exe --browser vivaldi

Why Go over Python

stomp worked well as a tooling script but had a hard dependency on Python and generated a deployment archive that needed to be extracted and executed manually. BELoader removes all of that — one binary, one execution, no runtime. Much cleaner for operational use.

The Go //go:embed directive makes it trivial to bundle the extension folder at compile time, so the final executable is entirely self-contained.


Supported Browsers

BrowserSeedNotes
Edgeemptydefault target
ChromeChromeSeednon-empty seed
Braveempty 
Vivaldiempty 

For educational and research purposes only. Unauthorized use to inject extensions without explicit consent is illegal.

GitHub →

This post is licensed under CC BY 4.0 by the author.