Skip to content
SPECIFICTION
Get listed

gobfuscate

github.com

Visit github.com
Spec score 7.0 #30 of 34 in Code Obfuscation Software

Spec sheet

Purpose
gobfuscate compiles Go binaries from obfuscated source code to make source information in the binary difficult or impossible to decipher.Read 11 Oct 2026 · github.com
License
The repository describes the project as BSD 2-Clause licensed.Read 11 Oct 2026 · github.com
Maker
The GitHub owner profile identifies unixpickle as Alex Nichol and describes him as an AI researcher, hobby web developer, and math geek.Read 11 Oct 2026 · github.com
Assembly limitation
Global names and struct methods are not obfuscated in packages that contain assembly files.Read 10 Oct 2026 · github.com
Build constraints
Global names and struct methods that appear multiple times because of build constraints are not obfuscated.Read 10 Oct 2026 · github.com
Build flags
The command supports flags including -keeptests, -noencrypt, -nostatic, -outdir, -padding, -tags, -verbose, and -winhide.Read 10 Oct 2026 · github.com
Build options
Flags include options for keeping tests, static linking, outputting a full GOPATH, compiler tags, verbose mode, custom hash padding, CGO-related build behavior, and hiding a Windows GUI.Read 11 Oct 2026 · github.com
CGO limitation
Packages using CGO cannot have package names renamed, and CGO also prevents global names and struct methods from being obfuscated.Read 10 Oct 2026 · github.com
Global names
It hashes global variable, constant, function, and newly defined type names.Read 10 Oct 2026 · github.com
Install and use
The README shows installation with `go get -u github.com/unixpickle/gobfuscate` and use as `gobfuscate [flags] pkg_name out_path`.Read 11 Oct 2026 · github.com
Limit: assembly and build constraints
Global names and struct methods are not obfuscated in packages with assembly files or when names appear multiple times because of build constraints.Read 11 Oct 2026 · github.com
Limit: CGO
Packages using CGO cannot have package names renamed, and CGO also prevents global-name and struct-method obfuscation under the stated refactoring restrictions.Read 11 Oct 2026 · github.com
Limit: constants
The README says converting string constants to variables does not work for mixed const/int blocks.Read 11 Oct 2026 · github.com
Limit: methods
Struct methods matching methods of imported interfaces are not renamed.Read 11 Oct 2026 · github.com
Method names
It hashes most struct method names, but leaves methods whose names match methods of imported interfaces unchanged.Read 10 Oct 2026 · github.com
Obfuscates
It manipulates package names, global variable and function names, type names, method names, and strings.Read 11 Oct 2026 · github.com
Package names
It copies a subset of GOPATH and hashes package names and paths to obscure them in the executable.Read 10 Oct 2026 · github.com
Package paths
It copies a subset of GOPATH and hashes package names and paths, which the README says can remove details such as GitHub usernames from the executable.Read 11 Oct 2026 · github.com
Release downloads
The GitHub releases page states that there are no releases for this repository.Read 11 Oct 2026 · github.com
String constant limitation
String constants in mixed const/int blocks are not converted successfully.Read 10 Oct 2026 · github.com
String handling
Strings are replaced with functions that XOR masked byte slices to reconstruct the string.Read 11 Oct 2026 · github.com

Where Specifiction places it

Alternatives to gobfuscateAll alternatives →