[Windows驱动开发] BlackBone介绍

news2024/11/11 22:19:41

▒ 目录 ▒

    • 🛫 导读
      • 需求
      • 开发环境
    • 1️⃣ 名词解释
    • 2️⃣ 介绍
    • 3️⃣ 库包含内容
    • 4️⃣ 编译问题总结
      • 常见问题
      • fatal error LNK1104
      • 非类型模板参数中的 "auto"
    • 📖 参考资料

🛫 导读

需求

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

PS: 作者DarthTon在github上的头像很有意思,就粘了下来。
在这里插入图片描述

开发环境

版本号描述
文章日期2022-12-04

1️⃣ 名词解释

MSDIA:Debug Interface Access,官网链接

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

2️⃣ 介绍

  • github网址
  • 最新版本只支持VS2019,如果要使用VS2017,需要选择分支:Branch_bd30dd1(2019/3/6 8:28:08)
  • 库包含内容(详细参考github主页README.md)
  • Xenos(基于Blackbone的开源的Windows dll注入工具)

3️⃣ 库包含内容

  • 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(手动加载模块)
    • 手动加载驱动

4️⃣ 编译问题总结

常见问题

  • sdk、wdk版本要相同10.0.17763.0。
  • cor.h文件及相关的mscoree.lib库找不到编译错误,需要安装C#模块。
  • vs2017-xp支持:https://docs.microsoft.com/en-us/cpp/build/configuring-programs-for-windows-xp?view=vs-2019

fatal error LNK1104

  • fatal error LNK1104: 无法打开文件“msvcprtd.lib”;安装Spectre组件
  • fatal error LNK1104: 无法打开文件“atls.lib”;安装带Spectre的ATL
    在这里插入图片描述

非类型模板参数中的 “auto”

非类型模板参数中的 “auto” 最低要求为 “/std:c++17”;在《项目->属性-> C/C++ -> 语言 -> C++语言标准》中设置c++17或者c++latest都行。
在这里插入图片描述

📖 参考资料

  • github网址 https://github.com/DarthTon/Blackbone
  • 最强黑客库Blackbone使用教程 https://blog.csdn.net/qq_38474570/article/details/122466905

**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dojo中的类

使用arcgis api for js 4.*进行地图的web前端开发,就不得不与dojo打交道。dojo是一个框架,自成体系,比如它对类的支持,有自己的一套。众所周知,js不是面向对象语言,没有类这一说,都是用函数来模…

人工智能轨道交通行业周刊-第25期(2022.11.28-12.4)

本期关键词:液体安检仪、智慧车站、大机作业、动车打温、实时人体姿态估计、图像压缩 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟V…

Java项目:SSM医院挂号预约管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为管理员与医生两种角色; 管理员角色包含以下功能: 管理员登录,添加科室,科室增删改查,医生管理,查看预约信息,…

Redis03:Redis基础知识以及数据类型

Redis基础知识以及数据类型基础知识Redis-key基本数据类型String(字符串)三种特殊的数据类型geospatialhyperloglogbitmaps基础知识 redis默认有16个数据库,默认使用的时第0个,可以使用select进行切换数据库 清除当前数据库 清除全部数据库的内容 Red…

Cmake升级与软链接

记录cmake升级版本的记录,主要参考文章:Unbuntu安装Ros后Cmake变成3.10_向日葵骑士Faraday的博客-CSDN博客 cmake升级、更新(ubuntu18.04)_Doctor_Wu_的博客-CSDN博客_cmake升级 设计安装ros后cmake版本出现问题,且卸…

[附源码]Python计算机毕业设计Django基于Java的员工管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Windows 文件共享功能使用方法,局域网多台电脑之间传送文件

设想一下,家里或者公司有多台电脑,连接同一个Wifi,也就是处于同一个局域网中。 在不能使用微信、网盘的文件传输功能的情况下,这多台电脑之间,就只能用U盘传送数据吗? 不。Windows系统中已经提供了文件共享…

ZMQ之克隆模式的可靠性

克隆服务器的可靠性 克隆模型1至5相对比较简单,下面我们会探讨一个非常复杂的模型。可以发现,为了构建可靠的消息队列,我们需要花费非常多的精力。所以我们经常会问:有必要这么做吗?如果说你能够接受可靠性不够高的、或…

Docker三大核心概念(镜像、容器和仓库)与虚拟化

目录 1. Docker是什么 2. Docker与虚拟化 3. Docker虚拟化的好处 4. Docker核心概念 4.1.镜像 4.2.容器 4.3.仓库 5. CentOS7 安装docker(在线方式) 5.1.内核版本信息检查 5.2 卸载可能存在的旧版本 5.3 安装必要的系统工具 5.4 添加docker-ce安装源 5.5 更新yum缓存 5.…

web前端期末大作业:个人网站设计——响应式个人小站网站HTML+CSS+JavaScript

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波

//气压模块为红色模块,传感器型号未知,其信号放大器型号为HX710B // STC15W408AS 11.0592MHz 波特率9600,串口输出大气压强值 // STC15W408AS没有定时器1,所以用定时器2做波特率发生器 // 采用电脑USB供电会有很大的干扰&#xff…

Unity工具 - 工具聚合页(UEWindow)

随着项目工程的推进,开发者们会根据工作内容的需要在Unity内开发众多的工具。随着工具的增多,Unity 的Menu菜单也会逐渐臃肿,过于分散,工具代码也难以查找。在此问题的基础上,开发了工具聚合页(UEWindow) 这一功能来管…

R绘图案例|基于分面的面积图

简介 最近参加一个统计建模的比赛。模型建模后,需要展示不同模型的性能指标,数据如下所示: 其中,第 1 列是不同样本,共376条。第 2-4 列是随机森林得到的结果,第 5-7 列是XGBoost的结果。一共使用了三种评…

数字验证学习笔记——UVM学习3 核心基类

一、核心基类 UVM世界中的类最初都是从一个uvm_void根类(root class)继承来的,而实际上这个类并没有成员变量和方法。 uvm_void只是一个虚类(virtual class),还在等待将来继承于它的子类去开垦。在继承与u…

适合新手的Pytorch的中文文档

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

牛客练习赛106

牛客练习赛106 C D 脑筋急转弯的构造题 E 染色法判断二分图 结论,这个图是二分图说明不存在奇环 设左边是x,右边是y 则有xyn,xyn, xyn,且x∗y>边数n∗(n−1)/2−mx*y>边数n*(n-1)/2-m x∗y>边数n∗(n−1)/2−m 也就是说左式最大是n∗n/4(xn/…

【1774. 最接近目标价格的甜点成本】

来源:力扣(LeetCode) 描述: 你打算做甜点,现在需要购买配料。目前共有 n 种冰激凌基料和 m 种配料可供选购。而制作甜点需要遵循以下几条规则: 必须选择 一种 冰激凌基料。可以添加 一种或多种 配料&…

[附源码]计算机毕业设计ssm校园一卡通服务平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Apache+PHP8+MYSQL的配置(目前最新版本)

已有很多年没有WEB开发了,本机都没了测试的服务环境,前几天GO语言的一个测试用例需要用到WEB,于是快速搭建一个Apche环境,也顺便将PHP和MYSQL的环境也配置好,贴出来方便自己和他人,临时需要的时候就更快了&…

机器人控制算法八之路径规划算法:RRT、RRT-Connect、Dynamic-Domain RRTs*

机器人控制算法八之路径规划算法:RRT、RRT-Connect、Dynamic-Domain RRTs* 本文主要介绍基于RRT快速搜索随机树的路径规划算法及其改进,主要参考以下论文: 1.1998 Rapidly-exploring random trees: A new tool for path planning2.IEEE2000 R…