Windows Golang / Checking Memory Size by Edode
Created the Wednesday 26 April 2023. Updated 6 months, 2 weeks ago.
Code
package main
import (
"unsafe"
"syscall"
"fmt"
)
var (
kernel_32 = syscall.MustLoadDLL("kernel32.dll")
globalMemoryStatusEx, _ = kernel_32.FindProc("GlobalMemoryStatusEx")
)
type memStatusEx struct {
dwLength uint32
dwMemoryLoad uint32
ullTotalPhys uint64
unused [6]uint64
}
func evadeSystemMemory() () {
msx := &memStatusEx{dwLength: 64}
r, _, _ := globalMemoryStatusEx.Call(uintptr(unsafe.Pointer(msx)))
if r == 0 {
fmt.Println("Error getting memory status")
}
var maxMemory float64 = 2.0
var system_memory = float64(msx.ullTotalPhys/1024/1024) / 1024
if system_memory <= maxMemory {
fmt.Println("Sandbox detected")
} else {
fmt.Println("Sandbox not detected")
}
}
func main() {
evadeSystemMemory()
}