Blackbone
Windows内存黑客库
特性
进程交互
- 管理PEB32/PEB64
- 通过WOW64屏障管理进程
进程内存
- 分配和释放虚拟内存
- 更改内存保护属性
- 读写虚拟内存
进程模块
- 枚举所有已加载的(32/64位)模块。使用Loader列表/Section对象/PE头部方法枚举模块。
- 获取导出函数地址
- 获取主模块
- 从加载器列表中解除模块链接
- 注入和弹出模块(包括纯IL映像)
- 向WOW64进程注入64位模块
- 手动映射原生PE映像
线程
- 枚举线程
- 创建和终止线程。支持跨会话线程创建。
- 获取线程退出码
- 获取主线程
- 管理TEB32/TEB64
- 等待线程结束
- 挂起和恢复线程
- 设置/移除硬件断点
模式搜索
远程代码执行
- 在远程进程中执行函数
- 汇编自定义代码并远程执行
- 支持cdecl/stdcall/thiscall/fastcall调用约定
- 支持按值、指针或引用传递参数,包括结构体
- 支持FPU类型
- 在新线程或任何现有线程中执行代码
远程挂钩
- 使用int3或硬件断点在远程进程中挂钩函数
- 在函数返回时挂钩
手动映射特性
- 支持x86和x64映像
- 映射到任意未受保护的进程中
- 使用适当的内存保护标志进行节映射
- 映像重定位(仅支持两种类型。我尚未见过其他重定位类型的PE映像)
- 解析导入和延迟导入
- 绑定导入作为副作用被解析(我认为)
- 模块导出
- 加载转发导出映像
- API模式名称重定向
- SxS重定向和隔离
- 支持激活上下文
- 类似原生加载顺序的Dll路径解析
- TLS回调。仅适用于一个线程且仅限PROCESS_ATTACH/PROCESS_DETACH原因。
- 静态TLS
- 异常处理支持(SEH和C++)
- 将模块添加到部分原生加载器结构(以支持基本模块API:GetModuleHandle、GetProcAddress等)
- 安全Cookie初始化
- 支持C++/CLI映像
- 映像卸载
- 在手动导入映射的情况下增加导入库的引用计数
- 正确处理循环依赖
驱动特性
- 分配/释放/保护用户内存
- 读写用户和内核内存
- 为WOW64进程禁用永久DEP
- 更改进程保护标志
- 更改句柄访问权限
- 重新映射进程内存
- 隐藏已分配的用户态内存
- 用户态DLL注入和手动映射
- 驱动的程序手动映射
要求
- Visual Studio 2017 15.7或更高版本
- Windows SDK 10.0.17134或更高版本
- WDK 10.0.17134或更高版本(仅驱动)
- VC++ 2017 Spectre库(x86和x64)
- 带有Spectre缓解措施的Visual C++ ATL(x86/x64)
许可证
Blackbone采用MIT许可证。依赖项采用其各自的许可证。
