
FunctionStomping从入门到精通C头文件使用教程【免费下载链接】FunctionStompingShellcode injection technique. Given as C header, standalone Rust program or library.项目地址: https://gitcode.com/gh_mirrors/fu/FunctionStompingFunctionStomping是一种新颖的Shellcode注入技术能够有效规避反病毒软件AV和端点检测与响应EDR工具。本文将详细介绍如何通过C头文件快速掌握这一技术帮助安全研究人员和开发者理解其原理与实际应用。什么是FunctionStompingFunctionStomping技术灵感来源于Module Stomping但其创新之处在于仅覆盖目标进程中的单个函数而非整个模块或可执行文件。这种轻量化的注入方式使目标进程仍能正常使用模块中的其他函数显著降低了被检测的风险。截至目前主流内存扫描工具如hollows-hunter尚未能有效识别这种注入方式。图FunctionStomping注入成功后弹出计算器的POC截图展示了技术的实际效果核心优势与适用场景✅ 主要优势隐蔽性强仅修改单个函数对目标进程影响极小兼容性高适用于大多数系统函数无需替换整个模块检测绕过通过内存保护属性调整如PAGE_EXECUTE_WRITECOPY规避常规扫描⚠️ 注意事项并非所有函数都适合此技术详见原理解析默认Shellcode可能被AV标记建议替换为自定义 payload 或加密处理C头文件快速使用指南环境准备克隆项目git clone https://gitcode.com/gh_mirrors/fu/FunctionStomping依赖要求编译器C17推荐VS2019系统Windows需Windows SDK支持一键集成步骤包含头文件将header/functionstomping.hpp添加到项目中通过以下代码调用核心功能#include functionstomping.hpp int main() { // 获取目标进程PID可通过任务管理器查看 DWORD pid 1234; // 执行函数覆盖注入 FunctionStomping(pid); return 0; }替换Shellcode打开header/functionstomping.hpp找到以下代码块替换为自定义Shellcode// 原始代码弹出计算器示例 unsigned char shellcode[] \x48\x31\xc9\x48\x81\xe9...; // 省略部分字节提示使用msfvenom生成Shellcode时建议添加-b \x00参数避免空字节编译与执行编译项目生成可执行文件运行程序并传入目标PIDyour_program.exe target_pid关键步骤注入后需触发目标函数如默认注入的CreateFileW才能执行Shellcode技术原理解析核心实现流程获取进程句柄通过OpenProcess获取目标进程的完全访问权限定位函数地址调用GetFunctionBase在指定模块如Kernel32.dll中查找目标函数如CreateFileW内存保护调整使用VirtualProtectEx将函数内存页设置为可写PAGE_EXECUTE_READWRITE写入Shellcode通过WriteProcessMemory覆盖目标函数的机器码恢复内存属性调整为PAGE_EXECUTE_WRITECOPY以规避内存扫描关键代码解析头文件中核心函数FunctionStomping实现了完整的注入逻辑关键步骤包括权限修改与内存写入// 更改内存保护属性以写入Shellcode if (!VirtualProtectEx(procHandle, functionBase, sizeToWrite, PAGE_EXECUTE_READWRITE, oldPermissions)) { std::cerr [-] Failed to change protection: GetLastError() std::endl; // 错误处理... } // 写入Shellcode到目标函数地址 if (!WriteProcessMemory(procHandle, functionBase, shellcode, sizeof(shellcode), written)) { std::cerr [-] Failed to overwrite function: GetLastError() std::endl; // 回滚操作... }高级配置与扩展自定义目标函数修改FunctionStomping函数中的模块名和函数名参数可注入到其他系统函数// 原始代码注入到Kernel32.dll的CreateFileW BYTE* functionBase GetFunctionBase(procHandle, LKernel32.dll, CreateFileW);注意需确保目标函数足够大以容纳Shellcode过小的函数可能导致注入失败Rust版本使用项目同时提供Rust实现通过Cargo编译后直接使用cd functionstomping cargo build --release target/release/functionstomping.exe pid常见问题解决❓ 注入后无反应确认目标进程PID正确确保注入后触发了目标函数如通过文件操作触发CreateFileW检查Shellcode是否被AV拦截建议使用加密Shellcode❓ 编译报错确保已链接必要库#pragma comment(lib, Shlwapi.lib)启用C17标准项目属性→C/C→语言→C标准总结FunctionStomping为安全研究提供了一种高效的Shellcode注入方案其轻量化设计和反检测特性使其在红队评估中具有重要价值。通过本文介绍的C头文件集成方法即使是新手也能快速上手这一技术。建议结合原理解析深入理解内存操作细节并始终在授权环境中进行测试。项目完整代码与最新更新functionstomping/技术细节参考RastaMouse的Module Stomping研究【免费下载链接】FunctionStompingShellcode injection technique. Given as C header, standalone Rust program or library.项目地址: https://gitcode.com/gh_mirrors/fu/FunctionStomping创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考