教程 › ZDMA 安装指南
ZDMA 安装指南
从开箱到通过速度测试——让 ZDMA 正常运行所需的全部步骤。第 4 节讲怎么让手上的软件用上 ZDMA;如果要把它接进自己的项目,接入方式、版本规则与代码示例见 LeechCore 集成指南。
开始前请阅读
- 不要直接用手触碰电路——静电可能损坏 ZDMA。
- 安装前请关闭主机和控制电脑两台电脑并断开电源。
- 未经授权不要拆解 ZDMA——否则将失去保修。
- 不要毁坏标签/铭牌。它是 ZDMA 唯一的识别信息,升级时需要用到。建议拍照保存到手机。

1. 概览
盒内包含
- 1 × ZDMA
- 1 × Thunderbolt 数据线(1.5 m)
- 1 × 螺丝——体积很小,可能在清关/物流检查中丢失;也可以用机箱或显卡的备用螺丝固定 ZDMA。

接口
- Thunderbolt 接口 1——仅传输数据(不供电),兼容性最佳。推荐使用。
- Thunderbolt 接口 2——功能完整,支持 60 W 供电,用料更好。如果控制电脑必须通过其唯一的 Thunderbolt 接口供电,请使用它。
- JTAG——用于固件刷写。

2. 安装
- 断电。关闭主机和控制电脑并断开电源,防止损坏设备。
- 安装 ZDMA。将设备对准 PCIe X4 或 PCIe X16 插槽左侧的缺口,垂直插入,然后用螺丝固定。
务必固定牢靠。ZDMA 较重——如果不固定,使用中可能因振动松脱而损坏。


- 连接数据线。使用随附的 Thunderbolt 线:一端接 ZDMA 的 Thunderbolt 接口 2,另一端接控制电脑的 Thunderbolt 接口。
说明 ZDMA 固定好之后,可以在电脑开机状态下插拔线缆——但软件正在使用 ZDMA 时切勿拔线,否则控制电脑可能崩溃。ZDMA 仅通过 Thunderbolt 传输数据:普通 USB-C 接口或普通 USB 线无法使用——请使用 Thunderbolt III 或 IV 线缆。 - 安装驱动(在控制电脑上)。解压驱动后:右键开始菜单 → 设备管理器 → 右键其他设备 / Management Card → 更新驱动程序 → 浏览我的电脑以查找驱动程序 → 选择驱动文件夹 → 下一步 → 仍然安装此驱动程序软件。
3. 测试
这一步只是确认硬件装好了、能正常跑起来,跟您之后要用什么软件无关。
- 先关掉安全软件。卸载控制电脑上的杀毒软件,并关闭 Windows Defender。杀毒软件会拦截 DMA 读写,不关的话测试一定不通过。
- 运行测试程序。下载并解压我们提供的测试文件,双击运行
DMAtest.exe。窗口里出现不停跳动的数字就说明通过了——数字越大越好,不用记具体数值,能持续刷新即可。我们的测试程序已经把需要的文件全部打包好(含最新版leechcore.dll),解压即用,不用自己凑 DLL 版本。
用我们提供的测试程序,可以跳过这一段。如果您用的是别人给的、或者自己编译的测试工具,请先把工具文件夹里的leechcore.dll换成我们提供的最新版本(点下面的按钮下载)。旧版本的 DLL 认不出 ZDMA,测试会一直不出数字,看起来就像硬件坏了一样。技术细节压缩包里的
leechcore.dll与leechcore_driver.dll必须成对使用、来自同一 release,不要新旧混用。自建工具在跑业务代码前,建议先用pcileech.exe -device fpga probe确认版本对齐与设备连通性。如果一直不出数字,请先按《排障:设备识别不到》走一遍,那里涵盖接口、指示灯、固件、BIOS 和驱动。若仍未解决,请把完整的测试窗口截图发给我们(Discord 或邮件都可以),我们帮您看是哪一步的问题。
4. 如何使用
测试通过之后,剩下的都在软件一侧。ZDMA 在用户态就是 LeechCore 的那对 DLL:进程按 Windows 的 DLL 搜索顺序加载到我们提供的 leechcore.dll 与 leechcore_driver.dll,就能拿到设备。多数程序还带着自己那份旧版 LeechCore,所以先看它的 DLL 能不能替换。
情况一:DLL 可以替换(多数现成程序)
- 退出目标程序,确认进程已经结束——后台驻留的实例也要退,否则 DLL 处于占用状态,改不动。
- 解压我们提供的压缩包,得到
leechcore.dll与leechcore_driver.dll。 - 把这两个文件覆盖进程序 exe 所在的目录,原文件留一份
.bak以便回退。Windows 加载 DLL 时先搜 exe 所在目录,放这里就会优先命中。两个文件要一起换只换一个会版本错配:LcCreate直接返回失败,表现就是「设备识别不到」。目录里若还有vmm.dll(MemProcFS),同样必须取自同一 release。 - 重新启动程序。
情况二:DLL 换不了,或者换了不生效
出现下面任一情况,说明问题不在「替换文件」这一层:
- 程序目录里没有
leechcore.dll——DLL 被打包进 exe,运行时才释放,或者干脆走内存加载。 - 替换后程序起不来、报文件校验失败或直接闪退(程序自带完整性校验)。
- 替换后仍然报找不到 DMA 设备,而我们的测试程序能正常读出数字——硬件没问题,问题在调用方。
接下来看这个程序您改不改得动:
- 改得动——自己写的,或者是能自行编译的开源项目:按集成指南接一遍就行。DLL 与 exe 同目录、把两个 DLL 作为资源嵌入单文件 exe,两条路线都有完整代码示例和排错表。
- 改不动——闭源的第三方程序:把集成指南转给作者,说明您用的是 ZDMA。适配量不大,通常一轮就能搞定。
技术细节(可以直接转给软件作者)ZDMA 走 Thunderbolt 并使用自带驱动,用户态只需要 LeechCore 那对 DLL,不需要
FTD3XX.dll(那是 FT601 / USB3 板卡才用的)。接入方式二选一:DLL 与 exe 同目录(开发期推荐,好调试、DLL 可单独升级),或把两个 DLL 作为资源嵌入 exe、启动时释放到同一临时目录,再 SetDllDirectory + LoadLibrary(对外分发推荐;纯内存加载会因 driver 这层二级依赖而失败)。另外 ZDMA 新固件 v4.17 / FPGA1 v4+ 必须配最新 leechcore.dll。完整规则、代码示例与排错表见上面的集成指南。判断不出卡在哪一层,或者需要我们直接跟软件作者对接技术细节,在 Discord 找我们。
5. 固件构建与刷写
用 LightningZ Flasher Tool 刷写,无需 Vivado。专门指南有分步说明:
ZDMA 的全部固件资料发布于 Ulf Frisk 的 pcileech-fpga / ZDMA 项目,包含完整的构建与刷写教程。
刷写提示
- 刷写完成后,请关机并断电 10 秒再开机,让 ZDMA 正确加载——不要只做重启。
- 工具会锁定目标:自己的固件只写入 FPGA0;FPGA1 只能通过在线匹配刷写。
- JTAG 接口不兼容 Thunderbolt 线——请使用普通 USB 数据线刷写。