Plxsmarex/Shellcode-Toolkit

GitHub: Plxsmarex/Shellcode-Toolkit

一个基于Windows GCC的shellcode生成工具包,可将C代码编译为优化的shellcode和微型PE文件。

Stars: 0 | Forks: 0

# Shellcode-Toolkit 一个简单、易用的工具包,用于使用 Windows GCC 生成高度优化的 shellcode 和微型可执行文件。 # 如何使用 只需在 Main.c 中编写您的代码。使用 "createstring" 宏将所有字符串放在开头,EntryPoint 函数将是程序的入口点。如果需要,您可以使用标准头文件中的类型和结构体,但不要使用任何标准 C 库函数或导入。 完成后,运行 "Build.bat",它将使用带有自定义链接器脚本的 GCC 将其编译为微型可执行文件,然后使用 objcopy 提取 .text 节以创建 shellcode 二进制文件。为此,GCC 和 objcopy 必须位于 PATH 环境变量中。 Shellcode-Toolkit.c 包含一些在开发中非常有用的函数,GetPEBBase 将获取进程环境块 (PEB) 的基地址,在 PEB 和相关内存区域中可以找到许多有用的东西,但目前我只包含用于加载 Windows API 的函数,其他工具包函数可以作为练习留给读者添加。 Main.c 包含一些 messagebox shellcode 的示例代码,编译后为 352 字节的 shellcode 和 1024 字节的 PE 文件。 # GetDLLBase GetDLLBase 是一个可用于定位模块 (DLL) 的函数,它接受 PEB 的基地址(使用 GetPEBBase 获取)和模块的哈希值(稍后详细介绍哈希),然后通过将其哈希值与 PEB LDR 模块列表中每个模块的哈希值进行比较,来定位输入模块的基地址,直到找到匹配项。它将返回找到的模块的基地址,如果未找到则返回 0。 GetDLLBase 的搜索系统也绕过了 PEB hooking(模块列表中的假 DLL)。GetDLLBase 可用作 Windows API GetModuleHandle 的替代品。 # GetExportAddress GetExportAddress 的功能类似于 GetDLLBase,但它是针对导出(函数/API)而不是模块,它将获取目标模块的基地址(通过 GetDLLBase 获取)和导出的哈希值,然后通过将其哈希值与所选模块导出目录中每个导出的哈希值进行比较,来定位输入导出的基地址,直到找到匹配项。它将返回找到的导出的基地址,如果未找到则返回 0。 GetExportAddress 可用作 Windows API GetProcAddress 的完整替代品。 # 哈希系统 Shellcode-Toolkit 使用优化的哈希来表示模块和导出,而不是明文字符串,这使得逆向工程更加困难,并减小了编译后 shellcode 的文件大小。 Hasher.ps1 可用于对字符串进行哈希处理。 # 问题 在我的 shellcode 加载器 JITLoader 的 C# 版本执行的生成 shellcode 中调用 Windows API 会导致 AccessViolationException。 编译后的 PE 可执行文件仅包含一个 .text 节,这可能看起来可疑,这也使调用堆栈看起来很奇怪。 # 鸣谢 https://print3m.github.io/blog/from-c-to-shellcode - 使用 C 编译 shellcode https://redops.at/en/blog/edr-analysis-leveraging-fake-dlls-guard-pages-and-veh-for-enhanced-detection - 关于 PEB Hooking 的信息。
标签:AI合规, API 哈希, C 语言, DNS 反向解析, Objcopy, PEB 遍历, PE 文件, Shellcode 生成, Windows GCC, 中高交互蜜罐, 二进制安全, 代码开发套件, 免杀技术, 动态 API 解析, 后门开发, 客户端加密, 恶意软件开发, 攻击载荷生成, 数据展示, 暴力破解检测, 最小化可执行文件, 红队, 链接器脚本