• Pika

    前言

    最近偶然了解到 DMA 游戏外挂实现原理,作为一个计算机从业人员,探索心作祟,顺便了解一下 DMA 原理。

    什么是 DMA

    DMA(Direct Memory Access,直接存储器访问) 是一种让外设绕过 CPU、直接和内存交换数据的机制。

    简单来说,CPU 就是一个“老板”,一个人干活的时候必须要亲力亲为,DMA 是“老板”招的“员工”。老板通知员工干活,员工开始干,干完之后再通知给老板就行了。

    图片

    DMA 工作流程

    一次完整的工作流程:

    - CPU 启动磁盘,将搬迁的数据信息告诉 DMA 控制器。

    - 等磁盘数据准备好,告诉 DMA 控制器开始"工作"。

    - DMA 控制器向 CPU 申请系统总线。

    - DMA 控制器接管总线,数据直接从磁盘搬进内存,不经过 CPU。

    - DMA 控制器通知 CPU"完成",CPU 来做收尾。

    CPU 只做"发起"和"收尾",搬运全程不参与。

    图片

    DMA 使用场景

    应用场景 |
    传输路径 |
    传输内容 |

    文件读写 |
    磁盘 ⇄ 内存 |
    文件数据块 |

    网络收发 |
    网卡 ⇄ 内存 |
    网络数据包 |

    图形渲染 |
    内存 → 显存 |
    视频帧数据 |

    音频播放 |
    内存 → 声卡 |
    音频数据流 |

    视频采集 |
    摄像头 → 内存 |
    视频帧数据 |

    主楼
  • x1a02

    学408的时候接触过,现在也都忘的7788

    #1
  • 晨旭

    搞嵌入式的应该很熟悉dma这东西,节省cpu资源的神器,数据传来传去基本不占用资源

    总之不算是什么新东西了

    随便打开个芯片的手册

    图片

    #2
  • Pika

    嵌入式现在行情咋样?应该没被 AI 波及到吧

    #3
  • 晨旭

    文档和资料完善的厂商,AI支持的比较好

    但是本来这些厂商就不缺人来开发,缺人的是那些资料很难看的国产厂商开发

    硬件就更不用说了,依旧在起步阶段,等他们慢慢搞吧

    #4
  • AFLY

    去年还专门买了DMA、融合器玩PUBG,那才叫一个通透 ^-^

    玩了两月没玩了,某鱼卖掉了

    #5
  • 菜鸡rrr

    上学的时候老师专门讲了,现在已经全忘完了 ^-^

    #6
  • zhangpy

    这样做的效果是通信速度更快吗?手机上是不是有厂商使用了这个技术?

    #7
  • 别碰代码

    因为这个原理,dma现在好像还是没有非常强硬的检测手段,只能通过游戏的行为进行智能分析 ^-^

    #8
  • Pika

    我也是,现在学校里学的知识全还给老师了

    #9
  • Pika

    手机也可以理解为小电脑,只要涉及数据搬迁的都用了这个技术。

    #10
  • Pika

    哈哈哈哈,是的,前一阵子看到一个博主吐槽,讲 DMA 反制目前还是太难做到,毕竟完全不经过 CPU 之类的。

    #11
  • CKIN

    现在有IOMMU这种技术吧,OS可以让设备只能读指定区域的物理内存

    #12

发表回复

登录后回复