入侵进程的地址空间

入侵进程的地址空间

2025 南京大学《操作系统原理》
入侵进程的地址空间

Hacking Address Spaces

进程 (状态机) 在 “无情执行指令机器” 上执行

  • 状态机是一个封闭世界
  • 但如果允许一个进程对其他进程的地址空间有访问权
    • 意味着可以任意改变另一个程序的行为
      • 听起来就很 cool

“入侵” 进程地址空间的例子

  • 调试器 (gdb)
    • gdb 可以任意观测和修改程序的状态
2025 南京大学《操作系统原理》
入侵进程的地址空间

物理入侵进程地址空间

金手指:直接物理劫持内存

  • 听起来很离谱,但 “卡带机” 时代的确可以做到!

center

  • 今天我们有 Debug Registers 和 Intel Processor Trace
  • 帮助系统工具 “合法入侵” 地址空间
2025 南京大学《操作系统原理》
入侵进程的地址空间

物理入侵进程地址空间 (cont'd)

Game Genie: 一个 Look-up Table (LUT)

center

2025 南京大学《操作系统原理》
入侵进程的地址空间

物理入侵进程地址空间 (cont'd)

Game Genie as a Firmware

  • 配置好 LUT、加载卡带上的代码 (像是一个 “Boot Loader”)

center

2025 南京大学《操作系统原理》
入侵进程的地址空间

随着游戏越来越大……

地址空间那么大,哪个才是 “金钱”?

  • 包含动态分配的内存,每次地址都不一样
  • 思路:Everything is a state machine
    • 观察状态机的 trace,就知道哪个是金钱了

查找 + Filter

  • 进入游戏时 exp=4950\textrm{exp}= 4950
  • 打了个怪 exp=5100\textrm{exp} = 5100
  • 符合 495051004950 \to 5100 变化的内存地址是很少
    • 好了,出门就是满级了
2025 南京大学《操作系统原理》
入侵进程的地址空间

入侵进程地址空间:金山游侠

一招制胜

  • 包含非常贴心的 “游戏内呼叫” 功能 (Hack DirectX)

center

它就是专为游戏设计的 “调试器”

2025 南京大学《操作系统原理》
入侵进程的地址空间

入侵地址空间:“外挂” 才是终极的手段

做一个虚假的内存控制器 😂

center

2025 南京大学《操作系统原理》
入侵进程的地址空间

“外挂”:另一个思路

采集视频信号

  • 采集卡 (MS2130) + 树莓派 = 外挂

用魔法打败魔法

  • 创造变得前所未有的容易

我能否用 FPGA 设计一个电路,收到视频流,以及来自 I/O 端口的 bound-box 绘图指令,把 bound-box 绘制到视频流上输出。

2025 南京大学《操作系统原理》