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

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

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

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

工具目录

分类

查看所有分类
Loading categories
SHGenOb — 基于 Python 的工具,用于从 PIC C 代码生成 Shellcode | Kitploit
工具/GitHubGitHub/oldboy21/shgenob
加密/解密工具Payload生成漏洞利用Shellcode恶意软件分析二进制分析学习与教育Shellcode 生成
GitHuboldboy21/shgenob

SHGenOb

基于 Python 的工具,用于从 PIC C 代码生成 Shellcode

查看仓库
4359个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SHGenOB:从 PIC C 代码生成 Shellcode 的工具

简介

SHGenOB 是一款基于 Python 的工具,旨在从用 C 编写的 Position Independent Code (PIC) 生成 shellcode。它自动化了编译 C 代码、提取 .text 段以及可选地使用 XOR 加密对生成的 shellcode 进行加密的过程。

本项目完全基于 hasherezade 的 此文档。

Position Independent Code (PIC)

面向 SHGenOB 用户的重要提示:为了让该 shellcode 生成工具正常工作,输入文件中的 C 代码必须以 Position Independent Code (PIC) 形式编写。该工具假定所提供的代码遵循下文所述的 PIC 原理和特性。

Position Independent Code (PIC) 是一种无论加载到哪个绝对内存地址都能执行的机器代码。这一特性使 PIC 在创建 shellcode、共享库和某些类型的恶意软件时特别有用。PIC 的主要特性包括:

  • 地址无关性:无论代码被加载到内存中的哪个位置,PIC 都能正确运行。
  • 无固定内存引用:它避免使用绝对地址,而是依靠相对寻址或其他技术来引用内存位置。
  • 自包含:PIC 通常将所需数据包含在代码自身中,从而减少外部依赖。
  • 栈字符串:将字符串声明为字符数组会强制编译器将它们压入栈中,而不是放入 PE 文件的 .data 或 .pdata 段。
  • 免重定位:它不需要加载程序执行重定位,因此加载和执行速度更快。
  • 体积更小:与位置相关代码相比,PIC 通常能生成更小的二进制文件。
  • 寄存器相对寻址:它经常使用寄存器相对寻址来访问数据和执行跳转。
  • 使用偏移量:PIC 使用相对于当前指令指针的偏移量,而不是绝对地址。
  • 平台特定技术:不同的 CPU 架构可能需要不同的技术来实现位置无关性。

在无法预先知道代码确切加载地址的场景中,PIC 至关重要,因此它是 shellcode 开发和某些系统编程领域的关键概念。使用 SHGenOB 时,请确保你的输入 C 代码遵循这些 PIC 原理,以生成有效且可靠的 shellcode。

功能特性

  • 使用 Microsoft Visual Studio 工具编译 PIC C 代码
  • 从编译后的可执行文件中提取 .text 段
  • 可选地使用 XOR 加密对 shellcode 进行加密
  • 将生成的 shellcode 插入到加载器模板中
  • 编译并使用生成的 shellcode 测试加载器
  • 支持调试模式以检查中间文件
  • 成功执行后清理中间文件

环境要求

  • Windows 操作系统
  • Python 3.6 或更高版本
  • Microsoft Visual Studio 2022 Community Edition(或兼容版本)
  • 以下 Python 包:
    • pefile
    • argparse
  • Visual Studio 提供的 C 编译器 (cl.exe) 和汇编器 (ml64.exe)
  • 来自 Visual Studio 的 vcvars64.bat 文件(用于设置编译环境)

安装

  1. 从 python.org 安装 Python 3.6 或更高版本
  2. 安装 Microsoft Visual Studio 2022 Community Edition
  3. 安装所需的 Python 包:

pip install pefile argparse

  1. 将此仓库克隆或下载到本地计算机

使用方法

使用以下语法从命令行运行脚本:

root@kitploit:~
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]

参数:

  • --code-file 或 -cf:(必需)包含 PIC 代码的 main.c 文件路径
  • --masm-file 或 -mf:(可选)外部 .masm 文件路径,用于在 shellcode 中包含额外的汇编逻辑
  • --debug 或 -d:(可选)启用调试模式(跳过中间文件的清理)
  • --xor-key 或 -xk:(可选)用于加密 shellcode 的 XOR 密钥(格式:AA,BB,CC)

示例:

root@kitploit:~
# 基本用法
python shgenob.py --code-file main.c

# 使用外部 MASM 文件
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# 使用所有选项
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

函数说明

  1. save_to_file(content, filename):将给定内容保存到当前目录下的文件中
  2. cleanup():删除当前目录中的中间文件(.asm、.exe、.obj、.lnk)
  3. xor_encrypt(shellcode, key):使用提供的密钥对 shellcode 进行 XOR 加密
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file):将 shellcode 插入加载器模板
  5. extract_text_section(file_path, key):从 PE 文件中提取 .text 段并可选择对其进行加密
  6. find_file(root_dir, file_name):在给定目录及其子目录中搜索文件
  7. run_command_with_vcvars(command, vcvars_path):在设置 Visual Studio 环境变量的情况下运行命令
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe):使用 Visual Studio 编译器编译 C++ 文件
  9. modify_asm_file(asm_file):修改生成的汇编文件以兼容 shellcode
  10. main(cpp_file, args):编排 shellcode 生成过程的主函数

工作流程

  1. 解析命令行参数
  2. 定位 Visual Studio 工具(vcvars64.bat、cl.exe、ml64.exe)
  3. 将输入的 C 文件编译为汇编代码
  4. 修改生成的汇编文件
  5. 汇编修改后的汇编文件
  6. 从生成的可执行文件中提取 .text 段
  7. 可选地对提取的 shellcode 进行加密
  8. 将 shellcode 保存到文件
  9. 将 shellcode 插入加载器模板
  10. 编译加载器
  11. 使用生成的 shellcode 测试加载器
  12. 清理中间文件(调试模式除外)

调试

使用 --debug 标志可跳过清理过程并检查中间文件。这对于排查故障和理解 shellcode 生成过程非常有用。

安全注意事项

  • 本工具仅用于教育和授权测试目的
  • 生成的 shellcode 可能被杀毒软件标记
  • 使用加密(XOR 密钥)混淆 shellcode,但请注意这仅是一种基本的混淆方式
  • 确保你已获得在目标系统上使用此工具的许可

局限性

  • 目前仅支持 Windows 和 Microsoft Visual Studio 工具链
  • 对某些边界情况的错误处理有限
  • XOR 加密是一种基本的混淆方式,可能无法满足所有使用场景

贡献

欢迎为改进 SHGenOB 做出贡献。请遵循以下步骤:

  1. Fork 该仓库
  2. 为你的功能创建一个新分支
  3. 提交你的更改
  4. 推送到该分支
  5. 创建新的 Pull Request
下载工具