码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [Windows驱动开发] BlackBone介绍


    ▒ 目录 ▒

      • 🛫 导读
        • 需求
        • 开发环境
      • 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:**文章中内容仅用于技术交流,请勿用于违规违法行为。

  • 相关阅读:
    软件设计不是CRUD(24):系统耦合性变化对性能的影响以及优化措施
    前端经典面试题 | v-if/v-show的原理及区别
    【教3妹学编程-算法题】最长奇偶子数组
    工程经理离职,苹果自动驾驶汽车项目再遇“减速带”
    400 The plain HTTP request was sent to HTTPS port
    Xcode、终端、Mason、nvim.debug环境路径
    centos7.6升级openssh9.3p1,openssl1.1.1t
    B40 - 基于STM32单片机的电热蚊香蓝牙控制系统
    每日技巧分享:怎么裁剪音频,快学习起来
    [附源码]计算机毕业设计springboot网咖管理系统
  • 原文地址:https://blog.csdn.net/kinghzking/article/details/128168414
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号