Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Clematis — PE 转 shellcode | Kitploit
工具/GitHubGitHub/cblabresearch/clematis
Payload生成漏洞利用Shellcode红队Shellcode 生成Payload 开发
GitHubcblabresearch/clematis

Clematis

PE 转 shellcode

查看仓库
283531年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Clematis

clematis

[ 中文 | English ]

🛠️ 一个强大的工具,用于将PE文件(EXE/DLL)转换为与位置无关的shellcode。

✨ 主要特性

  • 支持将PE文件(EXE/DLL)转换为shellcode
  • 同时兼容x86和x64架构
  • 支持命令行参数
  • 内置LZNT1压缩算法,显著减小输出文件大小
  • 可选的混淆功能,增强隐蔽性

📦 安装

依赖项

root@kitploit:~
pip install pefile lznt1

🚀 使用方法

root@kitploit:~
python clematis.py -f <PE文件> -o <输出文件> [-g <true/false>] [-c <true/false>] [-p <参数>]

参数说明

使用示例

root@kitploit:~
# 显示帮助信息
python clematis.py -h

# 基本用法
python clematis.py -f target.exe -o output.bin

# 禁用混淆和压缩
python clematis.py -f target.exe -o output.bin -g false -c false

# 传递参数给目标程序
python clematis.py -f target.exe -o output.bin -p arg1 arg2

python clematis.py -f target.exe -o output.bin -p "arg1 arg2"

💪 我们的优势

  • 🎯 支持 DOT NET
  • 🗜️ 支持压缩
  • 🎭 支持混淆
  • 🔄 支持参数传递
  • 🚀 对golang进行完全的支持
  • 💪 构造的shellcode非常的强大且稳定

💡 设计理念

在某些特殊环境中,我们可能会遇到以下挑战:
root@kitploit:~
- 🛡️ 无法进行进程注入(AV/EDR/XDR拦截)
- 🔄 当前进程中执行golang程序可能导致阻塞
- 💾 golang程序执行后可能存在内存泄漏
- ⚠️ golang创建的线程无法释放!
为解决这些问题,我们开发了clematis:
root@kitploit:~
- ✨ 将golang程序转换为shellcode
- 🎯 在当前进程中直接执行
- ♻️ 执行完毕后自动释放内存
- 🚀 完全避免golang相关的内存问题
- 🔄 回收golang创建的所有线程

📝 注意事项

  • 确保有足够的权限读取源PE文件和写入目标文件
  • 转换大文件时建议启用压缩功能
  • 混淆可能会增加一些性能开销,但能提供更好的隐蔽性

⚠️ 已知问题

  • 使用mingw | gcc编译的应用程序(exe)的部分内容可能无法加载,这可能是由重定位导致的?(未实现)
  • DOT NET 出现非法内存访问(已修复)

🗓️ 计划功能

  • 更高级的加密选项以提升安全性
  • 图形界面支持,便于操作
  • 实时转换进度监控
  • 处理PE中的资源
  • 增加规避能力,比如 [ProxyDll, Syscall, ...]

🔄 最近更新

  • 2024-12-27

    • 支持 DOT NET(x64 | x86)
  • 2024-12-28

    • 修复了潜在的 DOT NET 程序崩溃问题(可能不会发生)

    • 添加了 IMAGE_DIRECTORY_ENTRY_EXCEPTION 的处理(x64)

    • 更新API使用NTAPI


⚠️ 警告

  • 我们不打算免费发布此更新,我们会将其放在付费圈子中。
  • 该项目将继续保持可用和免费,但未来可能不会更新,谢谢!

clematis


🔍 工作原理

Clematis通过以下步骤将PE文件转换为shellcode:

  1. 读取并解析目标PE文件
  2. 处理命令行参数(如果有)
  3. 可选的LZNT1压缩
  4. 可选的混淆处理
  5. 生成最终的位置无关shellcode
root@kitploit:~
flowchart TD
    A[开始] --> B[读取PE文件]
    B --> C[解析PE结构]
    C --> D{是否有命令行参数?}
    D -- 是 --> E[处理命令行参数]
    D -- 否 --> F{是否启用压缩?}
    E --> F
    F -- 是 --> G[LZNT1压缩]
    F -- 否 --> H{是否启用混淆?}
    G --> H
    H -- 是 --> I[执行混淆处理]
    H -- 否 --> J[生成shellcode]
    I --> J
    J --> K[输出结果]
    K --> L[结束]

🤝 贡献

欢迎提交Issues和Pull Requests!


下载工具
描述默认值是否必需
-f--file需要转换的PE文件路径是
-o--output输出文件名是
-g--garble启用混淆true否
-c--compress启用压缩true否
-p--parameter传递给PE文件的执行参数否
原API新API
VirtualAllocNtAllocateVirtualMemory
VirtualProtectNtProtectVirtualMemory
VirtualFreeNtFreeVirtualMemory
LoadLibraryLdrLoadDll
GetProcAddressLdrGetProcedureAddress
WaitForMultipleObjectsNtWaitForMultipleObjects
CreateEventNtCreateEvent
CloseHandleNtClose
SignalObjectAndWaitNtSignalAndWaitForSingleObject
TerminateThreadNtTerminateThread
SuspendThreadNtSuspendThread
OpenThreadNtOpenThread
ResumeThreadNtResumeThread
GetContextThreadNtGetContextThread
SetContextThreadNtSetContextThread
...
  • 2025-1-1

    • 增加了线程列表和内存列表管理的线程安全性
    • 修复了一些功能性问题
    • 移除了payload中的参数处理并改为patch方式
    • 支持upx
    • 在payload中添加架构检查以验证架构是否匹配
    • 更改了一些实现方式以提供更好的兼容性