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.
A small suggestion
Re: A small suggestion
Look at %VMProtect%\Include\Go
Re: A small suggestion
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
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
Re: A small suggestion
#cgo arm64 LDFLAGS: -L./ -lVMProtectARM64
Re: A small suggestion
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")
}
}
=====
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")
}
}
=====
Re: A small suggestion
You should remove unused licensing functions from "vmprotect.go" (like VMProtectSetSerialNumber, VMProtectGetCurrentHWID, etc.) because the Go's compiler can't do that itself.