once2twice.hashnode.dev记一次基于 Linux 5.15.0-139 内核源码中ebpf辅助函数解惑学习在 eBPF 开发中,辅助函数(Helper Functions)是连接沙箱代码与内核原生的唯一桥梁, 辅助函数既不是动态加载的插件,也不是脆弱的符号引用。它们是在内核启动那一刻,由引导代码根据链接脚本的‘施工图’,强行焊接在内存只读区域的物理基石。 本文起源于我在开发ebpf程序时思考辅助函数到底是什么?它和内核提供的其他函数有什么区别? 。 本文记录了我是如何通过源码分析、逆向思考和底层调试,一步步打通 eBPF 辅助函数逻辑的全过程。所有的代码均出自于5.15.0-139内核源码 第一...Feb 6·5 min read
once2twice.hashnode.dev记一次Introcore 内核级 Bug 调试记录:从 PUSH 指令到页表模拟崩溃在虚拟机内省(VMI)的底层开发中,稳定性往往比功能更难攻克。最近在对 Windows 7 进行监控实验时,Bitdefender 的 HVMI (Introcore) 引擎频繁触发致命崩溃。错误指向了页表写入模拟逻辑。 通过对 hvmid 进程进行深度的 GDB 挂载调试,我还原了一个关于指令建模、地址不匹配以及异常处理机制的完整 Bug 链路。 1. 现象:内省引擎的“自杀” 在监控环境下,Introcore 抛出两类致命日志并导致守护进程崩溃: [ERROR] Access at 79c...Jan 26·3 min read
once2twice.hashnode.dev记一次从零设计 Vmi 代码注入引擎:劫持、执行、清理0.摘要 在虚拟化安全的研究中,如何在尽量不修改 Guest 内核的前提下执行自定义代码,一直是一个有趣且充满挑战的话题。本文尝试分享一套基于 Hypervisor 的完整代码注入思路,涵盖了从劫持 Guest 执行流、基于 EPT 的透明注入、双向通信协议到生命周期管理的全过程。 仓库位置:[mini-int3-injector].(https://github.com/ania0-art/mini-int3-injector). 1. 引言:一点背景与思考 1.1 传统方案遇到的一些挑战 ...Jan 25·4 min read
once2twice.hashnode.dev记一次实现minivmi我已经验证了运行结果: sudo ./list_domains 可以列出 dom0 + guest,并拿到 guest 的 uuid sudo ./cr3trace_uuid --uuid <uuid> 可以持续打印 CR3 写入事件(含 old/new CR3、RIP) 项目位置:minivmi luckybird@luckybird:~/vmi_test/minivmi/_build/bin$ sudo ./list_domains count=2 domid=0 hvm=no d...Jan 20·6 min read
once2twice.hashnode.dev记一次虚拟化下的detour框架实现1.Detour机制基础 1.1 什么是Detour? 在虚拟化安全监控领域,我们经常需要监控Guest OS内部的关键操作——进程创建、权限提升、内存映射变化等。传统的EPT(Extended Page Table)监控虽然可以捕获内存访问,但存在明显的局限性: 语义鸿沟:从"某个地址被写入"推断"进程被创建"需要复杂的分析 性能开销:细粒度的内存监控会产生大量VM-Exit 覆盖盲区:纯寄存器操作、链表修改等无法通过内存监控捕获 因此,我们需要一种更直接的方法:在关键函数的入口和出...Jan 17·6 min read