Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/ufrisk/pcileech
权限提升内存取证漏洞利用后渗透利用数字取证渗透测试硬件安全红队远程访问工具Payload 开发
GitHubufrisk/pcileech

pcileech

直接内存访问(DMA)攻击软件

7.9k1.0k25天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

PCILeech 概述:

PCILeech 使用 PCIe 硬件设备来读写目标系统内存。这是通过使用 PCIe 上的 DMA 实现的。目标系统上无需驱动程序。

PCILeech 在没有硬件的情况下也能与 LeechCore 库支持的多种软件内存获取方法配合使用——包括使用 DumpIt 或 WinPmem 捕获远程实时内存。PCILeech 还支持本地内存捕获以及多种内存转储文件格式。

PCILeech 支持多种内存获取设备,包括基于硬件和软件的。基于 USB3380 的硬件仅能原生读取 4GB 内存,但如果首先将内核模块(KMD)插入目标系统内核,则可以读取所有内存。基于 FPGA 的硬件以及基于软件的方法能够读取所有内存。

PCILeech 能够将多种内核植入物插入目标内核——从而通过“挂载的驱动器”轻松访问实时内存和文件系统。还可以移除登录密码要求、加载未签名驱动程序、执行代码以及生成系统 Shell。PCILeech 在 Windows 和 Linux 上运行。目前支持的目标系统为 x64 版本:UEFI、Linux、FreeBSD 和 Windows。这需要对内存具有写入权限(USB3380 硬件、FPGA 硬件、LiveCloudKd 或 CVE-2018-1038 “Total Meltdown”)。

要开始使用,请克隆仓库中的源代码,或下载最新的二进制文件、模块和配置文件。

PCILeech 的 PushPin GUI 前端 使常见的 RedTeam 任务变得极其简单。请注意,PushPin 不属于官方 PCILeech 发行版的一部分。

能力:

  • 以 >150MB/s 的速度从目标系统检索内存。
  • 从远程 LeechService 检索远程内存。
  • 向目标系统内存写入数据。
  • 原生 DMA 模式下可访问 4GB 内存(USB3380 硬件)。
  • 原生 DMA 模式下可访问所有内存(FPGA 硬件)。
  • 如果加载了内核模块(KMD),则可访问所有内存。
  • 原始 PCIe TLP 访问(FPGA 硬件)。
  • 将实时 RAM 挂载为文件 [Linux, Windows, macOS Sierra*]。
  • 将文件系统挂载为驱动器 [Linux, Windows, macOS Sierra*]。
  • 在目标系统上执行内核代码。
  • 生成系统 Shell 和其他可执行文件 [Windows]。
  • 拉取和推送文件 [Linux, FreeBSD, Windows, macOS Sierra*]。
  • 修补/解锁(移除密码要求)[Windows, macOS Sierra*]。
  • 易于创建自己的内核 Shellcode 和/或自定义签名。
  • 通过网络连接到远程 LeechAgent,以远程执行以下操作:
    • 通过网络转储物理内存。
    • 在远程主机上执行 Python 内存分析脚本。
  • 此处未列出的更多功能……

*) macOS High Sierra 及以上版本不受支持。

内存获取方法:

PCILeech 同时支持基于硬件和基于软件的内存获取方法。所有内存获取均由 LeechCore 库处理。

基于硬件的内存获取方法:

以下是支持的基于硬件的内存获取方法摘要。所有基于硬件的内存获取方法均在 Windows 和 Linux 上受支持。然而,基于 FPGA 的方法在 Linux 上性能稍有下降,最高约 90MB/s,而在 Windows 上约为 150MB/s。

基于软件的内存获取方法:

以下是支持的基于软件的内存获取方法摘要。请注意,LeechService 仅提供到远程 LeechCore 库的网络连接。连接后,可以使用硬件和基于软件的内存获取方法。

安装 PCILeech:

请确保您拥有最新版本的 PCILeech,访问 PCILeech GitHub 仓库:https://github.com/ufrisk/pcileech

获取最新的二进制文件、模块和配置文件。或者克隆仓库并从源代码构建。

Windows:

请参阅 PCILeech on Windows 指南,了解在 Windows 上运行 PCILeech 的信息。

如果使用 USB3380 硬件,则必须安装 Google Android USB 驱动程序。从以下位置下载 Google Android USB 驱动程序:http://developer.android.com/sdk/win-usb.html#download 解压驱动程序。
如果使用带有 FT601 USB3 附加卡或 PCIeScreamer 的 FPGA,则必须安装 FTDI 驱动程序。从 FTDI 下载 64 位 FTD3XX.dll 并将其放置在 pcileech.exe 旁边。
要在 Windows 中将实时内存和目标文件系统挂载为驱动器,必须安装 Dokany2 文件系统库。请从 https://github.com/dokan-dev/dokany/releases/latest 下载并安装最新稳定版本的 Dokany2。

Linux:

请参阅 PCILeech on Linux 指南,了解在 Linux 上运行 PCILeech 的信息。

示例:

请参阅项目维基页面获取更多示例。维基页面正在建设中,可能仍缺少信息。

挂载目标系统实时 RAM 和文件系统,需要加载 KMD。此示例使用 0x11abc000。

  • pcileech.exe mount -kmd 0x11abc000

显示特定内核植入物的帮助,本例中为 lx64_filepull 内核植入物。

  • pcileech.exe lx64_filepull -help

显示转储命令的帮助。

  • pcileech.exe dump -help

从目标系统转储所有内存,假设内核模块已加载到地址:0x7fffe000。

  • pcileech.exe dump -kmd 0x7fffe000

强制转储 4GB 以下的内存,包括可访问的内存映射设备,在 USB3380 上使用更稳定的 USB2 方法。

  • pcileech.exe dump -force -device usb3380://usb=2

接收 PCIe TLP(事务层数据包)并在屏幕上打印(需要正确配置的 FPGA 开发板)。

  • pcileech.exe tlp -vv -wait 1000

探测/枚举目标系统的可读内存页和最大内存(仅限 FPGA 硬件)。

  • pcileech.exe probe

转储地址在最小值和最大值之间的所有内存,遇到失败页面时不停止。仅在 FPGA 硬件上支持原生 64 位内存访问。

  • pcileech.exe dump -min 0x0 -max 0x21e5fffff -force

转储所有内存,尝试从目标系统注册表中定位内存映射,以避免转储可能无效的内存,以免导致目标系统冻结。

  • pcileech.exe dump -memmap auto

强制使用特定设备(而不是默认自动检测)。pmem 设备不会被自动检测。

  • pcileech.exe pagedisplay -min 0x1000 -device pmem

从远程 LeechAgent 转储远程内存,连接通过 kerberos 加密并进行相互认证。

  • pcileech.exe dump -device pmem -remote rpc://[email protected]

使用 LeechAgent 嵌入式 Python 环境在远程计算机上执行 Python 分析脚本 find-rwx.py。

  • pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]

修补 PID 432(本例中为 lsass.exe)的虚拟进程内存。

  • pcileech.exe patch -pid 432 -sig unlock_win10x64.sig

限制/已知问题:

  • 如果操作系统使用 IOMMU/VT-d,则无法工作。这是 macOS 的默认设置(除非在恢复模式下禁用)。启用了基于虚拟化的安全功能的 Windows 10/11 无法完全正常工作。
  • 最近的 Windows 和 Linux 版本默认阻止 DMA。

PCILeech 和 MemProcFS 社区:

是否觉得这一切有点难以招架?或者只是想快速提问?加入 PCILeech 和 MemProcFS DMA 社区 Discord 服务器吧!

构建:

二进制文件位于此仓库的发布版块中。如果需要构建自己的版本,也可以这样做。请参阅 PCILeech on Windows 或 PCILeech on Linux 以获取有关构建 PCILeech 的更多信息。PCILeech 还依赖 LeechCore,并且(对于某些额外功能)可选地依赖 Memory Process File System,这两个都必须单独构建。

贡献:

PCILeech、MemProcFS 和 LeechCore 是开源的,但非开放贡献。PCILeech、MemProcFS 和 LeechCore 提供高度灵活的插件架构,允许以插件形式进行贡献。如果您希望为核心项目做出贡献(而非插件),请在开始开发前与我联系。

链接:

  • 推特: Twitter
  • Discord: Discord - PCILeech/MemProcFS
  • PCILeech: https://github.com/ufrisk/pcileech
  • PCILeech FPGA: https://github.com/ufrisk/pcileech-fpga
  • LeechCore: https://github.com/ufrisk/LeechCore
  • MemProcFS: https://github.com/ufrisk/MemProcFS
  • 博客: http://blog.frizk.net
  • PushPin: PCILeech 的 GUI: https://github.com/LuckyPi/PushPin

更新日志:

先前版本(点击展开):

v1.0-v3.6

  • 初始版本及各种更新。请参阅各个版本以获取更多信息。

v4.0

  • 主要清理和内部重构。
  • FPGA 最大内存自动检测和更稳定的转储策略。
  • 在非基于虚拟化安全功能的系统上,使用 FPGA 硬件的新稳定 Windows 10 内核注入。
  • 用户模式注入(实验性)。
  • 移除了内置设备支持——现在使用 LeechCore leechcore.dll/leechcore.so 库。新增设备包括:
    • 内存转储文件(原始线性转储文件和 Microsoft 崩溃转储文件)。
    • Hyper-V 保存文件。
    • 通过 DumpIt / WinPmem 的实时内存。
    • 通过 -remote 设置的远程设备。
  • 移除了 API 和内置的 Memory Process File System——请改用 LeechCore 和 Memory Process File System 中功能更强的 API。
  • 多项其他更改和语法更新。

v4.1

  • LeechAgent 支持——远程内存获取和分析。

v4.2

  • 签名更新:
    • Linux 内核模块 - LINUX_X64_48(最新版本)
    • Win10 1903 内核模块 - WIN10_X64_2(需要 Windows 版本的 PCILeech)

v4.3

  • 错误修复。
  • 通过 LeechCore 库支持新设备(NeTV2 / RawUDP)。

v4.4

  • 错误修复和稳定性改进。
  • 支持 MemProcFS v3 库。
  • 二进制文件代码签名。
  • “tlploop” 命令。

v4.5

  • 错误修复。
  • 支持 v2 版本的 LeechCore 内存获取库。
  • 在 Windows 上运行时集成 MemProcFS。
  • 支持用户定义的物理内存映射(-memmap 选项)。

v4.6

  • 支持 LiveCloudKd。

v4.7

v4.10

  • Linux 支持 Windows 10 内置签名(依赖 MemProcFS v4.0)。
  • Windows 和 Linux 的独立发布版。
  • 一般清理。

v4.11

  • 支持 VMWare Workstation/Player 实时虚拟机内存。
  • 支持通过 LeechAgent agent-forensic 命令进行远程内存分析。
    • 远程运行 MemProcFS 取证模式。
    • 检索与 ElasticSearch 兼容的 JSON 数据。

v4.12

  • 32 位支持(pcileech 二进制文件)。

v4.13

  • 错误修复。
  • 挂载改进:
    • Windows 主机文件系统支持:升级到 Dokany2(注意!必须安装 Dokany2!)。
    • Linux 主机文件系统支持:添加了 FUSE 支持。
      示例:./pcileech mount /home/user/fusemnt/leechfs -kmd <your_kmd_address>
    • 现在可以访问 Windows 目标上除 C: 之外的其他本地驱动器。
  • Visual Studio 2022 支持。

v4.14

  • 进程虚拟内存支持(仅限 Windows)。
    • 命令:search, patch, write, display, pagedisplay
    • 示例:pcileech patch -pid 732 -sig unlock_win10x64.sig

v4.15

  • 支持 MemProcFS v5.0

v4.16

  • FPGA 性能改进。
  • 添加了 none 命令。
  • 添加了 -bar-ro 和 -bar-rw 选项。

v4.17

  • I/O BAR 支持。
  • Linux 改进:
    • KMD 签名更新(LINUX_X64_48)以支持最新的 Ubuntu 内核。
    • 更新内核模块以支持最新内核。
    • 新的 KMD 签名 - LINUX_X64_MAP - 在 -in 选项中指定目标系统内核 System.map。
    • 新的内核模块:lx64_exec_root。
  • Linux PCIe FPGA 性能改进。v4.18
  • 添加了基准测试命令。
  • 更新了解锁签名。
  • 添加了 -psname 选项。

v4.19

  • Linux 稳定性改进和内核模块加载增强。
  • Linux clang 编译支持。
  • macOS 支持。

Latest:

  • 错误修复。
  • 使用 gRPC 的 Linux LeechAgent 支持(LeechCore v2.21)。
  • 新增:-no-kmd-mem 选项,用于在加载 KMD 时可选禁用 KMD 内存访问(某些情况下可能有助于稳定性)。
  • 新增:-kmd WIN11_X64 - Windows 11 KMD 签名(WIN10_X64_3 的别名)。
下载工具
设备类型接口速度64位内存访问PCIe TLP 访问项目
赞助者
ZDMAFPGAThunderbolt31000MB/s是是💖
GBOXFPGAOCuLink400MB/s是是💖
LeetDMAFPGAUSB-C190MB/s是是💖
CaptainDMA M2FPGAUSB-C190MB/s是是💖
CaptainDMA M2 100TFPGAUSB-C220MB/s是是💖
CaptainDMA 4.1thFPGAUSB-C190MB/s是是💖
CaptainDMA 75TFPGAUSB-C200MB/s是是💖
CaptainDMA 100TFPGAUSB-C220MB/s是是💖
AC701/FT601FPGAUSB3190MB/s是是
USB3380-EVBUSB3380USB3150MB/s否否
DMA 修补版 HP iLOBMCTCP1MB/s是否
设备类型易失性写入Linux 支持插件
原始物理内存转储文件否否是否
完整 Microsoft 崩溃转储文件否否是否
完整 ELF 核心转储文件否否是否
VMware实时内存是是否否
VMware 内存保存文件文件否否是否
TotalMeltdownCVE-2018-1038是是否否
DumpIt /LIVEKD实时内存是否否否
WinPMEM实时内存是否否否
LiveKd实时内存是否否否
LiveCloudKd实时内存是是否是
Hyper-V 保存状态文件否否否是
LeechAgent*远程否否
  • 错误修复。
  • WIN10_X64_3 新的 Windows 10 稳定内核签名——包括 Win10 2004 版本。
  • 解锁签名更新——Win10/Linux(注意!最新的 Linux 内核尚不支持)。

v4.8

  • 错误修复。
  • 更好地支持最新的 x64 Linux 内核。

v4.9

  • 错误修复。
  • 签名更新。
  • 更好地支持最新的 x64 Linux 内核(Ubuntu 21.04)。
  • 按下 CTRL+C 时卸载已挂载的驱动器。