amenzhinsky / go-memexec

Run code from memory

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

example

AlexJujushvili opened this issue · comments

Please create a complete (step-by-step) example

Hi, @AlexJujushvili . Here is an example for you. Pls make sure I am not very experienced with golang.

package main

import (
	"embed"
	"github.com/amenzhinsky/go-memexec"
	"github.com/sirupsen/logrus"
	"os"
)

// file should exists on file system
//go:embed ff.exe
var fsEmbed embed.FS

func main() {
	_ = fun()
}

func fun() error {
	filename := "ff.exe"
	data, err := fsEmbed.ReadFile(filename)
	if err != nil {
		logrus.Errorf("failed to read file: %v", err)
		return err
	}
	logrus.Debugf("got data, len: %v", len(data))

	exeFile, err := memexec.New(data)
	if err != nil {
		return err
	}
	defer exeFile.Close()

	cmd := exeFile.Command(os.Args...)
	out, err := cmd.Output()
	if err != nil {
		logrus.Errorf("failed to exec file: %v", err)
		return err
	}
	logrus.Debug(out)
	return nil
}

// set GOOS=windows
// set GOARCH=386
// go build -ldflags "-s -w -H=windowsgui" cmd.go
// upx.exe cmd.exe

Can be found in README now.