gobfuscate
github.com
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
- Code Obfuscation Software#30 of 347.0