Linux 内存获取方法详解

 更新时间:2025年12月01日 08:47:23   作者:Bruce_xiaowei  
文章详细介绍了多种Linux内存获取工具和方法,包括LiME、AVML、fmem等,以及在虚拟化环境和紧急响应场景下的应用,文章还强调了内存获取的最佳实践,如权限要求、系统影响和法律合规性,并推荐LiME作为主流工具,需要的朋友可以参考下

Linux 内存获取方法详解

专业内存获取工具

1. LiME (Linux Memory Extractor) -推荐方法

LiME 是目前最常用的 Linux 内存获取工具:

# 安装编译依赖
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r)

# 下载和编译 LiME
git clone https://github.com/504ensicsLabs/LiME.git
cd LiME/src
make

# 使用 LiME 获取内存(输出到文件)
sudo insmod lime-$(uname -r).ko "path=./memory.lime format=lime"

# 或者通过网络传输到远程主机
sudo insmod lime-$(uname -r).ko "path=tcp:4444 format=lime"

2. AVML (Amazon Volatile Memory Lab)

基于 eBPF 的现代内存获取工具:

# 下载 AVML
wget https://github.com/microsoft/avml/releases/latest/download/avml
chmod +x avml

# 获取内存
sudo ./avml memory.bin

3. fmem - 传统工具

# 编译安装 fmem
git clone https://github.com/NateBrune/fmem
cd fmem
make
sudo ./run.sh

# 使用 dd 获取内存
sudo dd if=/dev/fmem of=memory.dump bs=1MB

基于 /proc 文件系统的方法

1. 通过 /proc/kcore (不推荐用于取证)

# 复制内核内存镜像
sudo cp /proc/kcore memory.kcore

# 注意:这通常不包含完整的物理内存

2. 获取进程内存

# 获取特定进程的内存
sudo cat /proc/[PID]/mem > process_memory.dump

# 获取所有进程列表
ps aux

虚拟化环境内存获取

1. VMware 虚拟机

# 创建内存快照
vmrun -T ws snapshot "[VMX文件路径]" "内存快照"

# 或者直接挂起虚拟机获取 .vmem 文件

2. QEMU/KVM 虚拟机

# 使用 virsh 创建内存转储
virsh dump [虚拟机名称] --memory-only memory.dump

# 或者使用 qemu-monitor
echo "dump-guest-memory memory.dump" | socat - UNIX-CONNECT:/var/run/qemu-[VM].monitor

3. Docker 容器内存

# 获取容器内进程内存
docker exec [容器ID] cat /proc/1/mem > container_memory.dump

# 或者使用 CRIU 检查点
docker checkpoint create [容器名] memory-checkpoint

紧急响应场景

快速内存获取脚本

#!/bin/bash
# quick_memory_capture.sh

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
OUTPUT_FILE="memory_capture_${TIMESTAMP}.lime"

echo "[*] 开始内存获取: $(date)"
echo "[*] 输出文件: ${OUTPUT_FILE}"

# 检查 LiME 模块
if [ -f "./lime.ko" ]; then
    echo "[*] 使用 LiME 获取内存"
    sudo insmod ./lime.ko "path=${OUTPUT_FILE} format=lime"
    sudo rmmod lime
else
    echo "[!] LiME 不可用,尝试其他方法"
    # 备用方法可以在这里添加
fi

echo "[+] 内存获取完成: $(date)"
echo "[+] 文件大小: $(du -h ${OUTPUT_FILE})"

内存获取最佳实践

准备工作

  1. 工具预部署: 在需要监控的系统上提前部署好内存获取工具
  2. 存储空间: 确保有足够的磁盘空间(通常等于或大于物理内存大小)
  3. 网络准备: 如果通过网络传输,确保带宽充足

执行步骤

# 1. 验证系统信息
uname -a
free -h

# 2. 选择合适的内存获取工具
# 3. 执行获取命令
# 4. 验证获取的内存文件完整性
file memory.dump
ls -lh memory.dump

验证获取的内存

# 检查文件类型
file memory.dump

# 检查文件大小(应该接近物理内存大小)
ls -lh memory.dump

# 使用 Volatility 验证可读性
python2 vol.py -f memory.dump imageinfo

注意事项

  1. 权限要求: 所有方法都需要 root 权限
  2. 系统影响: 内存获取可能影响系统性能
  3. 完整性: 确保获取过程中系统状态稳定
  4. 法律合规: 只在授权的情况下进行内存获取
  5. 存储安全: 妥善保管获取的内存文件,可能包含敏感信息

推荐方案

对于大多数场景,推荐使用 LiME 工具,因为:

  • 专门为取证设计
  • 对系统影响较小
  • 支持多种输出格式
  • 被主流取证工具良好支持

到此这篇关于Linux 内存获取方法详解的文章就介绍到这了,更多相关Linux 内存获取方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ubuntu18.04部署nfs服务全过程

    ubuntu18.04部署nfs服务全过程

    文章简述了搭建网络共享服务的步骤:安装服务端,配置共享目录参数(rw读写、sync同步、no_subtree_check提升性能),启动服务,客户端挂载,特别强调目录权限设置对服务运行的重要性
    2025-08-08
  • Linux命令编写一个用于监控系统资源的脚本

    Linux命令编写一个用于监控系统资源的脚本

    这篇文章主要为大家详细介绍了如何通过Linux命令编写一个用于监控系统资源的脚本,支持CPU、内存、磁盘使用率和系统负载等监控项,希望对大家有所帮助
    2026-06-06
  • Linux下双网卡Firewalld的配置流程(推荐)

    Linux下双网卡Firewalld的配置流程(推荐)

    firewalld提供了一个 动态管理的防火墙,用以支持不同网络区域的规则,分配对一个网络及其相关链接和界面一定程度的信任。这篇文章给大家介绍了Linux下双网卡Firewalld的配置流程,需要的朋友参考下吧
    2018-04-04
  • centos7部署docker的实现方式

    centos7部署docker的实现方式

    文章介绍了在CentOS系统上安装Docker的详细步骤,包括检查内核版本、卸载旧版Docker、安装依赖、配置yum源、更新软件包索引、查看可用版本、安装Docker、启动并设置开机自启动以及测试安装,同时,还提供了配置阿里云镜像加速的步骤
    2025-12-12
  • linux线程切换和进程切换的方法

    linux线程切换和进程切换的方法

    下面小编就为大家带来一篇linux线程切换和进程切换的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Linux编译优化必须掌握的几个姿势总结

    Linux编译优化必须掌握的几个姿势总结

    内核是操作系统的核心,也是操作系统最基本的部分。下面这篇文章主要给大家总结介绍了关于Linux编译优化必须掌握的几个姿势,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • Linux server配置安装Java与Tomcat服务器教程详解

    Linux server配置安装Java与Tomcat服务器教程详解

    这篇文章主要介绍了Linux server配置安装Java与Tomcat服务器教程详解,需要的朋友可以参考下
    2017-08-08
  • linux的sftp复制传输文件方式

    linux的sftp复制传输文件方式

    这篇文章主要介绍了linux的sftp复制传输文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 详解如何在 CentOS 7 中添加新磁盘而不用重启系统

    详解如何在 CentOS 7 中添加新磁盘而不用重启系统

    本篇文章主要介绍了详解如何在 CentOS 7 中添加新磁盘而不用重启系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 如何修改CentOS服务器时间为北京时间

    如何修改CentOS服务器时间为北京时间

    这篇文章主要介绍了修改CentOS服务器时间为北京时间的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-10-10

最新评论