A small suggestion

Hello, I have a small suggestion:
Could you implement the Go SDK in native Golang?
If you use a CGo-based approach, it becomes very difficult to install a C compiler on “Windows on Arm”, and cross-compilation also becomes extremely challenging.
Thanks.

Look at %VMProtect%\Include\Go

OK,I got it,but I had trouble with compile my Go program when I include “vmprotect.go”(and VMProtectSDK.h)
Error Detail:

command-line-arguments

/usr/local/go/pkg/tool/linux_arm64/link: running aarch64-linux-gnu-gcc failed: exit status 1
/usr/bin/aarch64-linux-gnu-gcc -Wl,–build-id=0xe2b57f457835e97a6ceeddd2fc8089d4321017a1 -o $WORK/b001/exe/a.out -Wl,–export-dynamic-symbol=_cgo_panic -Wl,–export-dynamic-symbol=_cgo_topofstack -Wl,–export-dynamic-symbol=crosscall2 -Wl,–compress-debug-sections=zlib /tmp/go-link-3053400307/go.o /tmp/go-link-3053400307/000000.o /tmp/go-link-3053400307/000001.o /tmp/go-link-3053400307/000002.o /tmp/go-link-3053400307/000003.o /tmp/go-link-3053400307/000004.o /tmp/go-link-3053400307/000005.o /tmp/go-link-3053400307/000006.o /tmp/go-link-3053400307/000007.o /tmp/go-link-3053400307/000008.o /tmp/go-link-3053400307/000009.o /tmp/go-link-3053400307/000010.o /tmp/go-link-3053400307/000011.o /tmp/go-link-3053400307/000012.o /tmp/go-link-3053400307/000013.o /tmp/go-link-3053400307/000014.o /tmp/go-link-3053400307/000015.o -O2 -g -O2 -g -lpthread -no-pie
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectGetCurrentHWID': /tmp/go-build/vmprotect.cgo2.c:57:(.text+0x24): undefined reference to VMProtectGetCurrentHWID’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectGetSerialNumberData': /tmp/go-build/vmprotect.cgo2.c:78:(.text+0x74): undefined reference to VMProtectGetSerialNumberData’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectGetSerialNumberState': /tmp/go-build/vmprotect.cgo2.c:96:(.text+0xbc): undefined reference to VMProtectGetSerialNumberState’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectIsDebuggerPresent': /tmp/go-build/vmprotect.cgo2.c:116:(.text+0x100): undefined reference to VMProtectIsDebuggerPresent’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectIsProtected': /tmp/go-build/vmprotect.cgo2.c:134:(.text+0x14c): undefined reference to VMProtectIsProtected’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectIsValidImageCRC': /tmp/go-build/vmprotect.cgo2.c:152:(.text+0x18c): undefined reference to VMProtectIsValidImageCRC’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectIsVirtualMachinePresent': /tmp/go-build/vmprotect.cgo2.c:170:(.text+0x1cc): undefined reference to VMProtectIsVirtualMachinePresent’
/usr/bin/ld: /tmp/go-link-3053400307/000001.o: in function _cgo_3ac57e4ddfef_Cfunc_VMProtectSetSerialNumber': /tmp/go-build/vmprotect.cgo2.c:189:(.text+0x210): undefined reference to VMProtectSetSerialNumber’
collect2: error: ld returned 1 exit status

C compiler is “aarch64-linux-gnu-gcc”

Please tell me what should I do.Thanks

#cgo arm64 LDFLAGS: -L./ -lVMProtectARM64

Thanks,the compiler was worked :slight_smile:
but when I try to protect,it have an error that “The licensing system not supported in this version”,
but i just use SDK feature “VMProtectIsProtected” :frowning:

My Code(Example):

package main

import (
vmprotect “awesomeProject1/inc”
“fmt”
)

func main() {
ok := vmprotect.IsProtected()
if !ok {
fmt.Println(“vmprotect is not protected”)
} else {
fmt.Println(“vmprotect is protected”)
}
}

You should remove unused licensing functions from “vmprotect.go” (like VMProtectSetSerialNumber, VMProtectGetCurrentHWID, etc.) because the Go’s compiler can’t do that itself.