当前位置: 首页 > news >正文

术语俗话 --- 什么是DBI,和hook什么区别

术语俗话 --- 什么是DBI,和hook什么区别

DynamicBinaryInstrumentRouting(动态二进制插桩路由)

先拆解这个吓人的名字

"动态二进制插桩"听起来很高深,其实拆开看很简单:

意思通俗理解
动态 程序运行中进行,不是提前改好的 车在开的路上改道,不是重新画地图
二进制 针对已经编译好的机器码 已经盖好的房子,不是图纸
插桩 在代码里"插一根桩子" 在路上插一个监控摄像头
路由 引导程序的执行路径 交通导航、改道

合起来就是:"在运行中的程序里,某个函数执行时,偷偷插入一段我自己的代码去观察或记录,然后让原函数继续正常执行"。


用生活比喻:快递站的监控摄像头

想象一个快递驿站:

  • 原本的流程:快递员 → 把包裹放进驿站 → 流程结束
  • 你想做的事:在快递员放包裹的那一刻,拍张照片记录一下(谁送的、什么时间、什么包裹),但不影响他正常放包裹

这就是"插桩"——在不打断原流程的前提下,插入一个"观察点"。


它和普通 Hook(改道)有什么区别?

Dobby 里其实有两种玩法,容易混淆:

玩法一:Replace(替换 / 普通 Hook) — "改道"

  • 原函数不执行了,直接跑到你的函数去
  • 好比:路口被封死,所有车强制改走你指定的路
  • 你的函数里可以选择要不要回头调用原函数

玩法二:Instrument(插桩) — "加摄像头" ← 就是本文件做的事

  • 原函数照常执行,只是在进入它之前,先让你的代码运行一下
  • 好比:路还是原来那条路,只是路口加了个摄像头,车经过时自动拍照,然后继续开
  • 你的代码只是"旁观者",主要用来观察/记录/修改参数