From dd59d79779bfdc960f7276fd3b59dfee2cade0d5 Mon Sep 17 00:00:00 2001 From: Nick Maliwacki Date: Sun, 5 Jan 2020 21:24:15 -0800 Subject: [PATCH] reference kernel32 alloc from go-windows --- go.mod | 3 ++- go.sum | 10 ++++++++++ pkg/powershell/chelpers.go | 3 ++- pkg/powershell/zpsh_host.go | 17 ----------------- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index e3c694c..5bed040 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,8 @@ module github.com/KnicKnic/go-powershell go 1.12 require ( + github.com/KnicKnic/go-windows v0.0.2 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b - golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6 + golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 k8s.io/klog v1.0.0 ) diff --git a/go.sum b/go.sum index 7425fd8..3a82002 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,19 @@ +github.com/KnicKnic/go-windows v0.0.2 h1:8979vGZ1dDMbTKR5aTZyluGDAzHnVlWZJ8y68DPTks4= +github.com/KnicKnic/go-windows v0.0.2/go.mod h1:bq9qyrkvAvMH2HPlkix2bE/eDuRz1kzwyoV/ieVhqK0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb h1:fgwFCsaw9buMuxNd6+DQfAuSFqbNiQZpcgJQAgJsK6k= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6 h1:ZJUmhYTp8GbGC0ViZRc2U+MIYQ8xx9MscsdXnclfIhw= golang.org/x/sys v0.0.0-20191104094858-e8c54fb511f6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 h1:ZBzSG/7F4eNKz2L3GE9o300RX0Az1Bw5HF7PDraD+qU= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= diff --git a/pkg/powershell/chelpers.go b/pkg/powershell/chelpers.go index 784417f..27a173a 100644 --- a/pkg/powershell/chelpers.go +++ b/pkg/powershell/chelpers.go @@ -2,6 +2,7 @@ package powershell import ( "unsafe" + "github.com/KnicKnic/go-windows/pkg/kernel32" ) func makeUint64FromPtr(v uintptr) uint64 { @@ -16,7 +17,7 @@ func allocWrapper(size uint64) (uintptr, error) { } func localAllocWrapper(size uint64) (uintptr, error) { - return localAlloc(size) + return kernel32.LocalAlloc(size) } func freeWrapper(v uintptr) { diff --git a/pkg/powershell/zpsh_host.go b/pkg/powershell/zpsh_host.go index b0f4c88..e474e8a 100644 --- a/pkg/powershell/zpsh_host.go +++ b/pkg/powershell/zpsh_host.go @@ -39,10 +39,7 @@ func errnoErr(e syscall.Errno) error { var ( modpsh_host = windows.NewLazyDLL("psh_host.dll") modntdll = windows.NewLazySystemDLL("ntdll.dll") - modkernel32 = windows.NewLazySystemDLL("kernel32.dll") - procLocalAlloc = modkernel32.NewProc("LocalAlloc") - procLocalFree = modkernel32.NewProc("LocalFree") procnativePowerShell_CreatePowerShell = modpsh_host.NewProc("NativePowerShell_CreatePowerShell") procnativePowerShell_CreatePowerShellNested = modpsh_host.NewProc("NativePowerShell_CreatePowerShellNested") procnativePowerShell_DeletePowershell = modpsh_host.NewProc("NativePowerShell_DeletePowershell") @@ -200,26 +197,12 @@ func nativePowerShell_DefaultAlloc(size uint64) (status uintptr, err error) { } return } -func localAlloc(size uint64) (status uintptr, err error) { - r0, _, err := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(0), uintptr(size), 0) - status = uintptr(r0) - if status != uintptr(0) { - err = nil - } - return -} func nativePowerShell_DefaultFree(address uintptr) { syscall.Syscall(procnativePowerShell_DefaultFree.Addr(), 1, uintptr(address), 0, 0) return } -func memcpy(dest uintptr, src uintptr, size uint64) (ptr uintptr) { - r0, _, _ := syscall.Syscall(procmemcpy.Addr(), 3, dest, src, uintptr(size)) - ptr = uintptr(r0) - return -} - func memcpyLogStringHolder(dest uintptr, src nativePowerShell_LogString_Holder) (ptr uintptr) { r0, _, _ := syscall.Syscall(procmemcpy.Addr(), 3, dest, uintptr(unsafe.Pointer(&src)), uintptr(unsafe.Sizeof(src)))