mirror of
https://github.com/moonD4rk/HackBrowserData.git
synced 2026-05-19 18:58:03 +02:00
refactor(windows): split Windows code into winapi (#575)
This commit is contained in:
@@ -3,7 +3,7 @@ ABE_ARCH ?= amd64
|
||||
ABE_TARGET ?= x86_64-windows-gnu
|
||||
|
||||
ABE_SRC_DIR = crypto/windows/abe_native
|
||||
ABE_BIN_DIR = crypto
|
||||
ABE_BIN_DIR = crypto/windows/payload
|
||||
ABE_BIN = $(ABE_BIN_DIR)/abe_extractor_$(ABE_ARCH).bin
|
||||
|
||||
ABE_CFLAGS = -shared -s -O2 \
|
||||
@@ -38,7 +38,7 @@ payload-verify: $(ABE_BIN)
|
||||
fi
|
||||
|
||||
payload-clean:
|
||||
rm -f $(ABE_BIN_DIR)/abe_extractor_*.bin
|
||||
rm -f $(ABE_BIN_DIR)/abe_extractor_*.bin $(ABE_BIN_DIR)/abe_extractor*.lib
|
||||
|
||||
# Scratch-layout codegen. The C header bootstrap_layout.h is the single
|
||||
# source of truth; the Go constants in crypto/windows/abe_native/bootstrap
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
//go:build windows && abe_embed
|
||||
|
||||
// Package payload holds the compiled reflective-injection ABE payload
|
||||
// binary and exposes it to the rest of HackBrowserData. The `abe_embed`
|
||||
// build tag selects between a real //go:embed'd binary (this file) and
|
||||
// a stub (stub_windows.go) so the default `go build ./...` succeeds on
|
||||
// machines without the zig toolchain.
|
||||
package payload
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
//go:generate make -C ../../.. payload
|
||||
|
||||
//go:embed abe_extractor_amd64.bin
|
||||
var abePayloadAmd64 []byte
|
||||
|
||||
// Get returns the embedded ABE payload for the given architecture.
|
||||
// Only "amd64" is supported today; x86 / ARM64 payloads are future work.
|
||||
func Get(arch string) ([]byte, error) {
|
||||
switch arch {
|
||||
case "amd64":
|
||||
if len(abePayloadAmd64) == 0 {
|
||||
return nil, fmt.Errorf("abe: amd64 payload is empty (build system bug)")
|
||||
}
|
||||
return abePayloadAmd64, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("abe: arch %q not supported in this build", arch)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//go:build windows && !abe_embed
|
||||
|
||||
package payload
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Get returns an error in non-release builds so feature code that needs
|
||||
// the payload fails fast with a clear message. Release builds (built
|
||||
// with -tags abe_embed) replace this with the //go:embed'd binary.
|
||||
func Get(arch string) ([]byte, error) {
|
||||
return nil, fmt.Errorf(
|
||||
"abe: payload not embedded in this build (rebuild with -tags abe_embed; arch=%s)",
|
||||
arch,
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user