A small suggestion

Issues related to VMProtect
Post Reply
danqing
Posts: 13
Joined: Thu Feb 19, 2026 8:04 am

A small suggestion

Post by danqing »

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.
Admin
Site Admin
Posts: 2809
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: A small suggestion

Post by Admin »

Look at %VMProtect%\Include\Go
danqing
Posts: 13
Joined: Thu Feb 19, 2026 8:04 am

Re: A small suggestion

Post by danqing »

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
Admin
Site Admin
Posts: 2809
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: A small suggestion

Post by Admin »

#cgo arm64 LDFLAGS: -L./ -lVMProtectARM64
danqing
Posts: 13
Joined: Thu Feb 19, 2026 8:04 am

Re: A small suggestion

Post by danqing »

Thanks,the compiler was worked :)
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" :(

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")
}
}
=====
Admin
Site Admin
Posts: 2809
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: A small suggestion

Post by Admin »

You should remove unused licensing functions from "vmprotect.go" (like VMProtectSetSerialNumber, VMProtectGetCurrentHWID, etc.) because the Go's compiler can't do that itself.
Post Reply