首页
社区
课程
招聘
[原创][Windows驱动开发] FF_BlackBone介绍
发表于: 2019-5-20 00:46 20385

[原创][Windows驱动开发] FF_BlackBone介绍

2019-5-20 00:46
20385

作为Windows开发人员,经常遇到枚举进程、枚举模块、读写进程内存的操作;Windows安全开发人员更是会涉及注入、hook、操作PE文件、编写驱动。每次都要翻各种资料制造轮子,那么有没有好的开源库解决这个问题呢,目前知道的就Blackbone了,而且它的代码写的很好,完全可以作为教科书来用。

PS:作者DarthTon在github上的头像很有意思,就粘了下来。

image.png

MSDIA:Debug Interface Access,官网链接

DEP :数据执行保护的英文缩写,全称为Data Execution Prevention。数据执行保护(DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。

编译选项如下图所示:

BlackBone开发环境设置

C++17编译错误修正(集成BlackBone到自己的工程会出现这个错误):

本文章仅供用于技术研究用途,请勿利用文章内容操作用于违反法律的事情。

微信公众号:

微信公众号

qq群:IT技术控/953949723

逐梦中原技术交流QQ群

 
 
 
 
 
 
 
 
 
  • github网址
  • 最新版本只支持VS2019,如果要使用VS2017,需要选择分支:Branch_bd30dd1(2019/3/6 8:28:08)
  • 库包含内容(详细参考github主页README.md)
  • Xenos(基于Blackbone的开源的Windows dll注入工具)
  • Process interaction(进程交互)
    • 操作PEB32/PEB64
    • 通过WOW64 barrier管理进程
  • Process Memory(进程内存)
    • 分配和释放虚拟内存
    • 改变内存保护属性
    • 读写虚拟内存
  • Process modules(进程模块)
    • 枚举所有进程加载的模块 (32/64 bit)
    • 获得导出函数地址
    • 获得主模块
    • 从模块列表中去除模块信息
    • 注入、卸载模块(支持 pure IL images)
    • 在WOW64进程中注入64位模块
    • 操作PE
  • Threads(线程)
    • 枚举线程
    • 创建和关闭线程
    • 获得线程退出码
    • 获得主线程
    • 管理 TEB32/TEB64
    • join线程(等待线程退出)
    • 暂停、恢复线程
    • 设置、清除硬件断点
  • Pattern search
    • 特征码匹配(支持本进程和其他进程)
  • Remote code execution
    • 在远程进程中执行函数
    • 组装自己的代码并远程执行(shellcode注入)
    • 支持各种调用方式: cdecl/stdcall/thiscall/fastcall
    • 支持各种参数类型
    • 支持FPU
    • 支持在新线程或已经存在的线程中执行shellcode
  • Remote hooking
    • 通过软硬断点,在远程进程中hook函数
    • Hook functions upon return(通过return挂钩函数)
  • Manual map features
    • 隐藏注入,支持x86和x64,注入任意未保护的进程,支持导入表和延迟导入等等特性,不一一列举了。
  • Driver features
    • 分配、释放、保护内存
    • 读写用户层、驱动层内存
    • 对于WOW64进程,禁用DEP
    • 修改进程保护标记
    • 修改句柄访问权限
    • 操作进程内存(如:将目标进程map到本进程等)
    • 隐藏已分配用户模式内存
    • 用户模式dll注入;手动mapping(手动加载模块)
    • 手动加载驱动
  • 操作PEB32/PEB64
  • 通过WOW64 barrier管理进程
  • 分配和释放虚拟内存
  • 改变内存保护属性
  • 读写虚拟内存
  • 枚举所有进程加载的模块 (32/64 bit)
  • 获得导出函数地址
  • 获得主模块
  • 从模块列表中去除模块信息
  • 注入、卸载模块(支持 pure IL images)
  • 在WOW64进程中注入64位模块
  • 操作PE
  • 枚举线程
  • 创建和关闭线程
  • 获得线程退出码
  • 获得主线程
  • 管理 TEB32/TEB64
  • join线程(等待线程退出)
  • 暂停、恢复线程
  • 设置、清除硬件断点
  • 特征码匹配(支持本进程和其他进程)
  • 在远程进程中执行函数
  • 组装自己的代码并远程执行(shellcode注入)
  • 支持各种调用方式: cdecl/stdcall/thiscall/fastcall
  • 支持各种参数类型
  • 支持FPU
  • 支持在新线程或已经存在的线程中执行shellcode
  • 通过软硬断点,在远程进程中hook函数
  • Hook functions upon return(通过return挂钩函数)
  • 隐藏注入,支持x86和x64,注入任意未保护的进程,支持导入表和延迟导入等等特性,不一一列举了。
  • 分配、释放、保护内存
  • 读写用户层、驱动层内存
  • 对于WOW64进程,禁用DEP
  • 修改进程保护标记
  • 修改句柄访问权限
  • 操作进程内存(如:将目标进程map到本进程等)
  • 隐藏已分配用户模式内存
  • 用户模式dll注入;手动mapping(手动加载模块)
  • 手动加载驱动
  • sdk、wdk版本要相同10.0.17763.0。
  • cor.h文件及相关的mscoree.lib库找不到编译错误,需要安装C#模块。
  • fatal error LNK1104: 无法打开文件“msvcprtd.lib”;安装Spectre组件
  • fatal error LNK1104: 无法打开文件“atls.lib”;安装带Spectre的ATL
  • vs2017-xp支持:https://docs.microsoft.com/en-us/cpp/build/configuring-programs-for-windows-xp?view=vs-2019
  • 非类型模板参数中的 "auto" 最低要求为 "/std:c++17";在《项目->属性-> C/C++ -> 语言 -> C++语言标准》中设置c++17或者c++latest都行
  • github网址
  • 最新版本只支持VS2019,如果要使用VS2017,需要选择分支:Branch_bd30dd1(2019/3/6 8:28:08)
  • 库包含内容(详细参考github主页README.md)
  • Xenos(基于Blackbone的开源的Windows dll注入工具)
  • Process interaction(进程交互)
    • 操作PEB32/PEB64
  • 操作PEB32/PEB64
    • 通过WOW64 barrier管理进程
  • 通过WOW64 barrier管理进程
  • Process Memory(进程内存)
    • 分配和释放虚拟内存
  • 分配和释放虚拟内存
    • 改变内存保护属性
  • 改变内存保护属性
    • 读写虚拟内存
  • 读写虚拟内存

  • [招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

    最后于 2020-3-4 18:15 被kinghzking编辑 ,原因:
    收藏
    免费 6
    支持
    分享
    最新回复 (13)
    雪    币: 4
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    2
    支持!
    2019-5-20 02:26
    0
    雪    币: 4709
    活跃值: (1575)
    能力值: ( LV2,RANK:15 )
    在线值:
    发帖
    回帖
    粉丝
    3
    支持!
    2019-5-20 08:50
    0
    雪    币: 2514
    活跃值: (5763)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    4
    谢谢分享
    2019-5-20 18:12
    0
    雪    币: 12717
    活跃值: (3690)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    支持
    2019-5-22 00:01
    0
    雪    币: 300
    活跃值: (2422)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    6
    谢谢分享
    2019-5-22 12:13
    0
    雪    币: 6124
    活跃值: (4631)
    能力值: ( LV6,RANK:80 )
    在线值:
    发帖
    回帖
    粉丝
    7
    勘误
    1 .sdk、wdk 版本是指定的最低版本,新的也可以
    2.不需要安装Spectre版本的sdk和wdk,可以直接禁用该特性(我的默认项目导入属性模板就是禁用的)
    3.xp支持,从vs2017开始无论安装xp支持工具集与否均不再支持windows xp,想要支持xp唯一的途径是使用类似vc-ltl等解决方案
    4.编译问题补充 语法不严格(已提交pr)
    2019-5-27 10:01
    0
    雪    币: 4128
    活跃值: (869)
    能力值: ( LV5,RANK:70 )
    在线值:
    发帖
    回帖
    粉丝
    8
    黑洛 勘误 1 .sdk、wdk 版本是指定的最低版本,新的也可以 2.不需要安装Spectre版本的sdk和wdk,可以直接禁用该特性(我的默认项目导入属性模板就是禁用的) 3.xp支持,从vs20 ...
    谢谢大佬指点
    2019-5-27 10:08
    0
    雪    币: 515
    活跃值: (3242)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    wem
    9
    谢谢分享
    2019-5-31 05:51
    0
    雪    币: 136
    活跃值: (342)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    10
    有这个库的使用交流群么
    2020-2-3 07:13
    0
    雪    币: 4128
    活跃值: (869)
    能力值: ( LV5,RANK:70 )
    在线值:
    发帖
    回帖
    粉丝
    11
    懒的时间 有这个库的使用交流群么
    木有呢,自己看了下它的源码,有示例程序的,可以参考着使用
    2020-2-4 15:19
    0
    雪    币: 1785
    活跃值: (3975)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    12
    功能很强大,谢谢分享
    2020-2-13 11:20
    0
    雪    币: 245
    活跃值: (294)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    13
    非常不错的代码,很适合学习用。
    2020-3-13 21:14
    0
    雪    币: 4128
    活跃值: (869)
    能力值: ( LV5,RANK:70 )
    在线值:
    发帖
    回帖
    粉丝
    14
    hksoobe 非常不错的代码,很适合学习用。
    谢谢支持,共同进步。
    2020-3-14 11:59
    0
    游客
    登录 | 注册 方可回帖
    返回
    //