Linux中使用gdb dump内存

摘要:
在应急响应中,我们经常需要转储某个内存块以进行分析。今天我们将讨论使用gdb命令转储sshd进程的内存。根据Linux系统的设计理念,内核只提供转储内存的机制。用户要转储什么样的内存以及要转储多少内存是策略问题,由用户决定。之后,转到/tmp目录,可以从dump中看到sshd.dmp内存字符串-10sshd.dump#,以查看sshd.ddump内存中至少超过10个字符的字符

在应急响应中,我们往往会有dump出某一块内存下来进行分析的必要。今天要讲的是利用gdb命令dump出sshd进程的内存。

按照 Linux 系统的设计哲学,内核只提供dump内存的机制,用户想要dump什么样的内存,dump多少内存是属于策略问题,由用户来决定。

在真实的使用场景中,主要有两种使用方式:

  • 一种是dump某一个进程的地址空间来供用户在进程挂掉之后debug分析,也就是通常所说的coredump
  • 另一种就是dump整个系统的内存空间,以便于系统管理员debug分析系统挂掉的原因,也就是通常所说的 kdump,由于dump内存的逻辑依然需要系统可以正常工作,管理系统的各种资源,所以kdump整个过程依赖kexec和一个额外的dump内核来保证整个流程正确的执行。

以下演示的是dump出某一个进程(sshd)的内存。

ps aux | grep sshd    #过滤出sshd进程,记录其PID
cat /proc/1431/maps   #查看1431进程的内存地址

Linux中使用gdb dump内存第1张

启动gdb,将sshd进程attach到gdb上

gdb attach 1431

Linux中使用gdb dump内存第2张

dump指定内存地址到指定的目录下

dump memory /tmp/sshd.dump 0x7f25c2a4e000 0x7f25c2a59000  #这里只dump sshd进程的第一块内存
  
dump memory /tmp/sshd.dump 0x7f25c2a4e000 0x7f25c2e61000  #dump了指定的内存块
# "dump memory"是命令 
# "/tmp/sshd.dump"是我们想保存dump出的内容的路径。 
# 两个hex是内存地址区间,这跟/proc/1431/maps的格式有些不一样。这是以0x开头的16进制表示的。

Linux中使用gdb dump内存第3张

之后,去/tmp目录下,可以看到dump出的sshd.dmp内存

Linux中使用gdb dump内存第4张

strings -10 sshd.dump   #查看sshd.dump内存中至少大于10字符的字符

Linux中使用gdb dump内存第5张

免责声明:文章转载自《Linux中使用gdb dump内存》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇64/32位oracle客户端安装配置详细教程Basler相机外部触发设置(Halcon)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux环境下java调用C/C++动态库(JNI技术:参数为指针与结构体)

一、JNI技术  JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植.  SUN公司发布的Java 本地接口(JNI)提供了将Java与C/C++、汇编等本地代码集成的方案,该规范使得在 Java 虚拟机内运行的 Java 代码能够与其它编程语言互相操作,包括创建本地方法、更新J...

Linux抓包工具tcpdump详解

原文链接 tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需...

使用autotools自动生成Makefile并在此之上使用dh-make生成可发布的deb程序包(详解)

转自:http://blog.csdn.net/longerzone/article/details/12705507 一、前言 本文将介绍如何使用autotools生成一个Makefile文件,并在此基础上使用dh-make和debuild生成一个可发布的deb程序包,这也是我们在Linux下开发应用程序以及想要发布应用程序需要做的。 无论是在Linux...

龙芯 3A4000 安装 Debian10 (via debootstrap)

由于一些原因,Debian 的内核不能直接在龙芯的 cpu 上使用。据悉 Linux 5.7 kernel 改进了对龙芯的支持,不久的将来我们应该就能更愉快地在龙芯上运行 Debian 了。 感谢龙芯群大佬的指导~~ 免去了编译内核等繁琐的工作。 龙芯 3A3000 及更早的机子可以参考刘世伟的文章:传送门 。 思路 Debian Wiki:https:/...

Linux上配置使用iSCSI详细说明

本文详细介绍iSCSI相关的内容,以及在Linux上如何实现iSCSI。 第1章 iSCSI简介 1.1 scsi和iscsi 传统的SCSI技术是存储设备最基本的标准协议,但通常需要设备互相靠近并用SCSI总线连接,因此受到物理环境的限制。 iSCSI(Internet Small Computer System Interface),顾名思义,iS...

Linux(ubuntu)安装MediaWiki

本篇文档所述步骤,作者完全验证过。一切OK。 作者:http://gaoxingf.blog.51cto.com/612518/188132,Younger Liu 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。 1. 编译安装libxml2 #wget ftp://xmlsoft.org/libxml2/lib...