From 59b2996862c9b88049accb3eb21018e0ee45af5a Mon Sep 17 00:00:00 2001 From: Raf <84349012+RafBishopFox@users.noreply.github.com> Date: Tue, 30 Jan 2024 08:42:34 -0500 Subject: [PATCH] Removing support for legacy DLL extensions --- client/command/extensions/load.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/client/command/extensions/load.go b/client/command/extensions/load.go index f8c73f7070..a493d48301 100644 --- a/client/command/extensions/load.go +++ b/client/command/extensions/load.go @@ -487,16 +487,10 @@ func runExtensionCmd(cmd *cobra.Command, con *console.SliverClient, args []strin entryPoint = loadedExtensions[extName].Entrypoint // should exist at this point } else { // Regular DLL - // extArgs := strings.Join(args, " ") - //legacy case - single string arg - if len(ext.Arguments) == 1 && ext.Arguments[0].Type == "string" { - extensionArgs = []byte(strings.Join(args, " ")) - } else { - extensionArgs, err = getExtArgs(cmd, args, binPath, ext) - if err != nil { - con.PrintErrorf("ext args error: %s\n", err) - return - } + extensionArgs, err = getExtArgs(cmd, args, binPath, ext) + if err != nil { + con.PrintErrorf("ext args error: %s\n", err) + return } extName = ext.CommandName entryPoint = ext.Entrypoint @@ -558,6 +552,12 @@ func getExtArgs(cmd *cobra.Command, args []string, binPath string, ext *ExtComma // Parse BOF arguments from grumble missingRequiredArgs := make([]string, 0) + // If we have an extension that expects a single string, but more than one has been parsed, combine them + if len(ext.Arguments) == 1 && strings.Contains(ext.Arguments[0].Type, "string") { + // The loop below will only read the first element of args because ext.Arguments is 1 + args[0] = strings.Join(args, " ") + } + for _, arg := range ext.Arguments { // If we don't have any positional words left to consume, // add the remaining required extension arguments in the