FunctionStomping:2023年最隐蔽的Shellcode注入技术详解
FunctionStomping:2023年最隐蔽的Shellcode注入技术详解
【免费下载链接】FunctionStompingShellcode injection technique. Given as C++ header, standalone Rust program or library.项目地址: https://gitcode.com/gh_mirrors/fu/FunctionStomping
FunctionStomping是一种全新的Shellcode注入技术,专为绕过杀毒软件(AV)和端点检测与响应(EDR)系统而设计。该技术灵感源自Module Stomping,通过仅覆盖目标进程中的单个函数而非整个模块,实现了更隐蔽的代码注入,同时保持目标进程其他功能的正常运行。
🚀 技术原理:为何FunctionStomping如此难以检测?
传统的代码注入技术往往需要修改整个模块或创建新的内存区域,这些行为容易被安全软件识别。FunctionStomping的创新之处在于:
- 精准定位:仅修改目标进程中特定函数(如Kernel32.dll中的CreateFileW)
- 最小化改动:不影响模块其他功能,降低异常检测风险
- 内存保护机制:通过修改内存页属性为PAGE_EXECUTE_WRITECOPY(WCX),进一步规避内存扫描工具
图:FunctionStomping注入过程的PoC截图,展示了计算器程序被成功注入并执行的效果
🛠️ 快速上手:两种使用方式
C++项目集成
只需包含头文件即可在现有项目中使用:
#include "functionstomping.hpp" int main() { DWORD pid = 3110; // 目标进程ID FunctionStomping(pid); return 0; }头文件路径:header/functionstomping.hpp
Rust独立程序
通过Cargo编译并直接运行:
git clone https://gitcode.com/gh_mirrors/fu/FunctionStomping cd functionstomping cargo build functionstomping.exe <目标进程ID>Rust源码目录:functionstomping/src/
⚠️ 注意事项
- 函数调用要求:注入完成后必须从远程进程调用被覆盖的函数(如默认的CreateFileW)才能触发Shellcode执行
- Shellcode替换:默认Shellcode仅弹出计算器,实际使用时需替换为自定义代码,建议进行加密处理
- 兼容性限制:并非所有函数都适用于此技术,具体原理可参考项目文档
📚 技术细节
FunctionStomping的核心实现包含以下步骤:
- 打开目标进程并获取句柄
- 定位目标模块中的特定函数地址
- 修改内存保护属性为可写
- 将Shellcode写入目标函数内存区域
- 恢复内存保护属性为WCX以隐藏痕迹
关键代码位于functionstomping/src/functionstomping.rs,通过Rust实现了跨平台的内存操作和进程交互。
🔍 为何选择FunctionStomping?
- 隐蔽性:2023年主流EDR仍难以有效检测
- 轻量级:无需复杂的内存分配或线程创建
- 灵活性:提供C++头文件和Rust库两种形式
- 低影响:不破坏目标进程整体稳定性
📝 免责声明
本项目仅用于教育和研究目的,作者不对任何非法使用导致的后果负责。所有贡献需遵循开源许可协议。
通过以上介绍,相信您已对FunctionStomping技术有了基本了解。如需深入学习,建议阅读项目完整文档并结合实际测试环境进行实践。
【免费下载链接】FunctionStompingShellcode injection technique. Given as C++ header, standalone Rust program or library.项目地址: https://gitcode.com/gh_mirrors/fu/FunctionStomping
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
