mirror of
https://github.com/lukaszraczylo/go-obfuscation.git
synced 2026-10-14 05:48:22 +00:00
.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package pclntab
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
// RuntimeCorrupt finds the running binary's pclntab in memory and XOR-encrypts
|
||||
// all name strings. Call this during init() — the Go runtime has already used
|
||||
// pclntab to resolve function pointers, so the program keeps working but
|
||||
// post-init reverse engineering tools see garbage names.
|
||||
//
|
||||
// WARNING: Degrades panic stack traces (function names become unreadable).
|
||||
func RuntimeCorrupt(key byte) error {
|
||||
if key == 0 {
|
||||
var k [1]byte
|
||||
if _, err := rand.Read(k[:]); err != nil {
|
||||
return fmt.Errorf("pclntab: failed to generate key: %w", err)
|
||||
}
|
||||
if k[0] == 0 {
|
||||
k[0] = 0x42
|
||||
}
|
||||
key = k[0]
|
||||
}
|
||||
|
||||
selfPath, err := os.Executable()
|
||||
if err != nil {
|
||||
return fmt.Errorf("pclntab: cannot determine executable: %w", err)
|
||||
}
|
||||
|
||||
return runtimeCorrupt(selfPath, key)
|
||||
}
|
||||
Reference in New Issue
Block a user