Linpmem:一款功能强大的Linux物理内存提取工具

关于Linpmem

Linpmem是一款功能强大的Linux物理内存提取工具,该工具专为x64 Linux设计,可以帮助广大研究人员在执行安全分析过程中快速读取Linux物理内存数据。

该工具类似Windows下的Winpmem,Linpmem不是一个传统的内存转储工具,该工具提供了一个API来从任何物理地址读取数据。除此之外,Linpmem还提供了多种读取物理内存的访问模式,例如字节、dward、qward和缓冲区访问模式等,其中缓冲区访问模式适用于大多数情况。

功能介绍

1、支持使用多种访问模式从内存物理地址读取数据;

2、CRS信息服务(可以通过pid指定目标进程);

3、虚拟地址转物理地址转换服务;

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/Velocidex/Linpmem.git

工具配置

内核驱动器构建

在使用该工具之前,我们必须按照下列步骤手动构建Linpmem驱动器。

第一步:获取正确的Header

我们需要使用到make工具和一个C编译器,这里推荐使用gcc。

确保安装好了linux-headers,具体的包名可能取决于Linux发行版的版本,下列命令可以检查是否已经安装好了linux-headers:

ls -l /usr/lib/modules/`uname -r`/

需要注意的是,

第二步:make

切换到项目目录中,并使用下列命令即可完成项目编译:

cd Linpmem

make

除此之外,你还需要在当前目录下生成linpmem.ko。

加载驱动器

linpmem.ko模块可以通过下列命令完成加载:

insmod path-to-linpmem.ko

或使用下列命令卸载模块:

rmmod path-to-linpmem.ko

加载之后,为了与Linpmem驱动器交互,我们还需要创建下列服务:

mknod /dev/linpmem c 42 0

工具使用演示

演示代码

下面给出的演示代码详细说明了如何与驱动器进行交互,我们可以在“./userspace_interface/linpmem_shared.h”路径下找到用户空间API参考信息:

cd demo

gcc -o test test.c

(sudo) ./test

请注意,这份代码非常重要!

命令行接口工具

$ ./pmem -h

Command-line client for the linpmem driver

 

Usage: pmem [OPTIONS] [COMMAND]

 

Commands:

  insmod  加载Linpmem驱动器

  help     打印工具帮助信息和退出

 

Options:

  -a, --address <ADDRESS>            需要执行物理读取操作的地址

  -v, --virt-address <VIRT_ADDRESS>  将地址转换成目标进程的地址空间(默认:当前进程)

  -s, --size <SIZE>                   缓冲区读取操作大小

  -m, --mode <MODE>             读取操作所使用的读取模式,可选byte, word, dword, qword, buffer

  -p, --pid <PID>                     目标进程CR3信息

      --cr3                          查询目标进程的CR3值(默认:当前进程)

      --verbose                      显示调试输出

  -h, --help                          打印帮助信息

  -V, --version                       打印工具版本

许可证协议

本项目的开发与发布遵循GPL-2.0开源许可证协议。

项目地址

Linpmem:【GitHub传送门】

参考资料

https://github.com/Velocidex/WinPmem

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417072.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

scons,一个实用的 Python 构建工具!

目录 前言 什么是SCons库&#xff1f; 安装SCons库 使用SCons库 SCons库的功能特性 1. 基于Python的构建描述语言 2. 自动化依赖管理 3. 多种构建环境支持 SCons库的应用场景 1. C/C项目构建 2. Python项目构建 3. 嵌入式系统开发 4. 持续集成环境 5. 跨平台项目构建 总…

如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

【InternLM 实战营笔记】大模型评测

随着人工智能技术的快速发展&#xff0c; 大规模预训练自然语言模型成为了研究热点和关注焦点。OpenAI于2018年提出了第一代GPT模型&#xff0c;开辟了自然语言模型生成式预训练的路线。沿着这条路线&#xff0c;随后又陆续发布了GPT-2和GPT-3模型。与此同时&#xff0c;谷歌也…

Failed to build tree: parent link [base_link] of joint [lidar_joint] not found

参考&#xff1a; Failed to build tree: parent link [base_link] of joint 在古月居gazebo 的基础教程里&#xff0c;运行古月居的mbot的launch文件报错&#xff0c;小机器人不出现。 主要原因是提供的xacro文件的宏定义没有放在xacro的命名空间。 解决&#xff1a; 将<mb…

Linux系统编程之线程互斥锁的使用方法

文章目录 一、Linux上线程开发互斥锁概要二、创建及销毁互斥锁2.1 示例&#xff1a;主线程等待两个线程退出&#xff0c;1线程和2线程打印信息 三、互斥量的初始化问题 一、Linux上线程开发互斥锁概要 互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;在…

小白水平理解面试经典题目leetcode 606. Construct String from Binary Tree【递归算法】

Leetcode 606. 从二叉树构造字符串 题目描述 例子 小白做题 坐在自习室正在准备刷题的小白看到这道题&#xff0c;想想自己那可是没少和白月光做题呢&#xff0c;也不知道小美刷题刷到哪里了&#xff0c;这题怎么还没来问我&#xff0c;难道是王谦谦去做题了&#xff1f; 这…

Dockerfile(6) - EXPOSE 指令详解

EXPOSE 通知 Docker 容器在运行时监听指定的网络端口 EXPOSE 端口号 EXPOSE 端口号/协议 默认协议是 TCP 同时在 TCP、UDP 上暴露端口 EXPOSE 80/tcp EXPOSE 80/udp EXPOSE 原理 个人理解&#xff1a;EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口EXPOSE…

【比较mybatis、lazy、sqltoy、lambda、操作数据 】操作批量新增、分页查询

orm框架使用Lambda性能比较 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.3-JDK17 数据库表(含有唯一性索引s_u) CREATE TABLE sys_u…

机器学习|线性回归

线性回归是尝试使用一条直线去拟合出图上的节点。 e i e_i ei​为第i个点构成的误差&#xff0c;使用平方的好处一是可以避免正负抵消&#xff0c;二是平方有利于放大大于1的误差的影响&#xff0c;同时缩小误差小于1的影响。 将平方项进行展开&#xff0c;以w作为变元&…

Floyd算法、Dijkstra算法、基础拓扑排序

Floyd算法 Dijkstra算法 基础拓扑排序

简单了解B树和B+树

目录 B树 B树 B树和B树的结构示意图 总结 B树和B树是两种非常重要的树状数据结构&#xff0c;它们广泛应用于数据库和文件系统的索引结构中。这两种数据结构能够帮助我们高效地管理、查询以及更新大量的数据。下面&#xff0c;我将简单介绍它们,以及他们之间的区别。 B树 B…

内存飙高问题如何排查?

目录 1、查看日志 2、查看GC情况 3、分析堆内存对象占用情况 4、分析堆内存快照文件 内存飙高如果发生在java进程上&#xff0c;一般情况是因为创建了大量对象导致&#xff0c;持续飙高说明垃圾回收跟不上对象创建的速度&#xff0c;或者内存泄漏导致对象无法被回收&#x…

unity学习(42)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——服务器收包2

1.解决上一次留下的问题&#xff1a; log和reg的时候也有session&#xff0c;输出看一下这两个session是同一个不&#xff1a; 实测结果reg log accOnline中的session都是同一个对象&#xff0c;但是getAccid时候的session就是另一个了。 测试结果&#xff0c;说明在LogicHan…

小程序中使用echarts地图

一、下载并安装echarts 1、下载echarts-for-weixin组件 echarts-for-weixin项目提供了一个小程序组件&#xff0c;用这种方式可以在小程序中方便地使用 ECharts。 下载ec-canvas项目&#xff08;下载地址&#xff09; ​​ 注意&#xff1a;下载的 ec-canvas 中的echarts的版本…

嵌入式怎么学?工程师学习路线都在这

在嵌入式系统领域&#xff0c;硬件与软件工程师是不可或缺的重要支柱&#xff0c;分别承担着不同的职责和角色&#xff0c;但两者又紧密相连&#xff0c;共同构成了嵌入式系统的核心。今天本文将详细探讨工程师需要学什么&#xff0c;希望对小伙伴们有所帮助。 嵌入式硬件工程师…

iOS App冷启动优化:Before Main阶段

iOS应用冷启动时&#xff0c;在 UIApplicationMain(argc, argv, nil, appDelegateClassName)方法执行前&#xff0c;主要经历以下阶段&#xff1a; 1. 执行exec&#xff08;&#xff09;启动应用程序进程 2. 加载可执行文件&#xff0c;即将应用程序的Mach-O文件加载到内存…

QT C++实践|超详细数据库的连接和增删改查操作|附源码

0&#xff1a;前言 &#x1faa7; 什么情况需要数据库? 1 大规模的数据需要处理&#xff08;比如上千上万的数据量&#xff09;2 需要把数据信息存储起来&#xff0c;无论是本地还是服务上&#xff0c;而不是断电后数据信息就消失了。 如果不是上面的原因化&#xff0c;一般…

Linux系统中make/Makefile的介绍

文章目录 前言一、make命令二、makefile功能介绍1.makefile文件的编写格式2.hello.c文件内容3.makefile文件4.安装make命令 总结 前言 在linux系统中&#xff0c;我们对项目文件进行处理的时候会不方便&#xff0c;因此我们需要对文件的编译进行自动化处理。 下面就是在Linux系…

Linux第67步_linux字符设备驱动_注册和注销

1、字符设备注册与注销的函数原型” /*字符设备注册的函数原型*/ static inline int register_chrdev(unsigned int major,\ const char *name, \ const struct file_operations *fops) /* major:主设备号&#xff0c;Limnux下每个设备都有一个设备号&#xff0c;设备号分…

接口自动化测试用例如何设计,一文搞定!

说到自动化测试&#xff0c;或者说接口自动化测试&#xff0c;多数人的第一反应是该用什么工具&#xff0c;比如&#xff1a;Python Requests、Java HttpClient、Apifox、MeterSphere、自研的自动化平台等。大家似乎更关注的是哪个工具更优秀&#xff0c;甚至出现“ 做平台的 &…