Files
Print3M-DllShimmer/cli/cli.go
T
Print3M ceae65b444 init
2025-08-15 18:10:11 +02:00

54 lines
1.3 KiB
Go

package cli
import (
"flag"
"fmt"
"os"
)
type CliFlags struct {
Input string
Proxy string
Mutex bool
}
func ParseCli() *CliFlags {
var flags CliFlags
flag.StringVar(&flags.Input, "i", "", "")
flag.StringVar(&flags.Input, "input", "", "")
flag.StringVar(&flags.Proxy, "p", "", "")
flag.StringVar(&flags.Proxy, "proxy", "", "")
flag.BoolVar(&flags.Mutex, "m", false, "")
flag.BoolVar(&flags.Mutex, "mutex", false, "")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: DllShimmer -i <path> -o <path> -p <path>\n")
fmt.Println()
fmt.Println("Usage:")
fmt.Println()
fmt.Printf(" %-24s %s\n", "-i, --input <path>", "Input DLL file (required)")
fmt.Printf(" %-24s %s\n", "-p, --proxy <path>", "Path to original DLL on target (required)")
fmt.Printf(" %-24s %s\n", "-m, --mutex", "Multiple execution prevention (default: false)")
fmt.Printf(" %-24s %s\n", "-h, --help", "Show this help")
fmt.Println()
fmt.Println("Example:")
fmt.Println()
fmt.Println(" DllShimmer -i version.dll -o shim.c -p 'C:\\Windows\\System32\\version.dll' -m")
fmt.Println()
fmt.Println("Created by Print3M (print3m.github.io)")
fmt.Println()
}
flag.Parse()
if flags.Input == "" || flags.Proxy == "" {
flag.Usage()
os.Exit(1)
}
return &flags
}