Reflektor is a Go library and CLI for loading shared libraries from bytes and invoking exported functions.
It exposes a stable root package (reflektor) so other projects can import it directly, while platform-specific loading is handled behind memmod.
| OS | Architectures | Shared Library Format | Status | Loader Notes |
|---|---|---|---|---|
| Windows | 386, amd64, arm, arm64 |
PE (.dll) |
Supported | In-memory PE loader |
| Darwin | amd64, arm64 |
Mach-O (.dylib, bundle) |
Supported | Pure Go dyld4-based in-memory loader, no cgo, no temp-file legacy NS APIs. |
| Linux | 386, amd64, arm64 |
ELF (.so) |
Supported | Pure Go in-memory ELF loader (maps PT_LOAD segments, applies relocations, resolves externals from runtime modules/dlsym); no memfd, no /dev/shm, no temp-file disk writes. |
| Other | - | - | Unsupported | Returns an explicit unsupported-platform error. |
Import path:
import "github.com/sliverarmory/reflektor"Example:
payload := []byte{}
lib, err := reflektor.LoadLibrary(payload)
if err != nil {
return err
}
defer lib.Close()
if err := lib.CallExport("StartW"); err != nil {
return err
}You can also load from a path:
lib, err := reflektor.LoadLibraryFile("./payload.dylib")The CLI is in /Users/moloch/git/reflektor/cli and uses Cobra.
Build:
go build -o reflektor ./cliUsage:
./reflektor <shared-library-path> [--call-export StartW]--call-export defaults to StartW.
CallExportis designed for zero-argument exports.- Reflektor normalizes common symbol naming differences where possible (for example underscore-prefixed forms).
- The root
reflektor.Libraryinterface is intentionally small:CallExport()andClose().
C test shared libraries are generated from:
/Users/moloch/git/reflektor/testdata/c/basic.c
Build test shared libraries for the full matrix:
./testdata/build_c_shared_libs.shRun tests:
go test ./...Linux cross-arch Docker harness:
/Users/moloch/git/reflektor/testdata/docker/linux-memmod.Dockerfile/Users/moloch/git/reflektor/testdata/docker/run-linux-memmod-matrix.sh
/Users/moloch/git/reflektor/reflektor.go: root importable package (reflektor)./Users/moloch/git/reflektor/memmod: OS-specific loader backends./Users/moloch/git/reflektor/cli: CLI entrypoint./Users/moloch/git/reflektor/testdata: portable shared-library fixtures and build/test harnesses.