linux /proc/kcore

文章目录

  • 前言
  • 一、简介
  • 二、读取/proc/kcore数据


前言

/proc/kcore 是 vmlinux在内存中的动态映像,可以使用gdb,objdump,crash等工具对其进行调试,从而获取当前系统内存中的数据。

一、简介

  1. Linux /proc/kcore详解(一)

二、读取/proc/kcore数据

下面我们将介绍如何从/proc/kcore中找到想要的数据。
首先和大多数ELF文件一样,/proc/kcore中也包含了ELF Header, Program Headers等信息。
使用readelf -l查看程序头信息,

root@A029129-PC:~# readelf -l /proc/kcoreElf file type is CORE (Core file)
Entry point 0x0
There are 10 program headers, starting at offset 64Program Headers:Type           Offset             VirtAddr           PhysAddrFileSiz            MemSiz              Flags  AlignNOTE           0x0000000000000270 0x0000000000000000 0x00000000000000000x0000000000001d24 0x0000000000000000         0x0LOAD           0x00007fff81002000 0xffffffff81000000 0x00000000010000000x0000000002a2c000 0x0000000002a2c000  RWE    0x1000LOAD           0x0000490000002000 0xffffc90000000000 0xffffffffffffffff0x00001fffffffffff 0x00001fffffffffff  RWE    0x1000LOAD           0x00007fffc0002000 0xffffffffc0000000 0xffffffffffffffff0x000000003f000000 0x000000003f000000  RWE    0x1000LOAD           0x0000088000003000 0xffff888000001000 0x00000000000010000x000000000009f000 0x000000000009f000  RWE    0x1000LOAD           0x00006a0000002000 0xffffea0000000000 0xffffffffffffffff0x0000000000003000 0x0000000000003000  RWE    0x1000LOAD           0x0000088000202000 0xffff888000200000 0x00000000002000000x00000000f7e00000 0x00000000f7e00000  RWE    0x1000LOAD           0x00006a000000a000 0xffffea0000008000 0xffffffffffffffff0x0000000003df8000 0x0000000003df8000  RWE    0x1000LOAD           0x0000088100002000 0xffff888100000000 0x00000001000000000x0000000105000000 0x0000000105000000  RWE    0x1000LOAD           0x00006a0004002000 0xffffea0004000000 0xffffffffffffffff0x0000000004140000 0x0000000004140000  RWE    0x1000

通过程序头信息我们可以得到VirtAddr和Offset之间的对应关系。
计算出符号在对应程序段之间的偏移,加上该程序段在文件中的偏移即可得到该符号在文件中的地址。
现在假设我们想要查看ext4_readdir在内存中的数据,

  1. 首先我们通过/proc/kallsyms查看ext4_readdir在内存中的地址
root@A029129-PC:~# cat /proc/kallsyms | grep ext4_readdir
ffffffff813bd750 t ext4_readdir
  1. 计算符号在程序段中的偏移:vOffset = ffffffff813bd750 - 0xffffffff81000000(VirtAddr)
  2. 计算符号在文件中的地址:addr = vOffset + 0x00007fff81002000(FileSiz)

读取addr数据,即为ext4_readdir在内存中的真实数据,该数据可以判断系统内存中是否存在攻击。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java(一)安装并使用 java(Windows)

安装并使用java 前言一、初识Java1.Java的安装1.1下载JDK1.2JDK安装与使用1.2.1安装1.2.2 IDEA(编译器)使用 2.Java运行编程逻辑(重要后面要用)总结 前言 学习很重要,复习也很重要,对于编程语言的复习更为…

开源|HDR-ISP开源项目介绍

引言 拖更很久了,本着出品必精的原则,我们更新就来点干货。想起刚入行时,网上并没有很多以及系统的ISP的学习资料,都是边工作、边搜集资料然后边学习,一路坎坎坷坷走到今天算是刚入了ISP的大门。 为了解决新人入门的…

JetBrains出品的IDE自动补全和提示文档设置

如题下图设置前景色和背景色: 效果如下图,标识1是Completion,标识2是Documentation:

1.8 工程相关解析(各种文件,资源访问

目录 1.8 工程相关解析(各种文件,资源访问) 分类 Android 基础入门教程 本节引言: 1.工程项目结构解析: 1.res资源文件夹介绍: 2.如何去使用这些资源 2.深入了解三个文件: MainActivity.java: 布局…

将 Qt Designer 的 ui 文件转换为 PySide2 使用的.py 文件

20201206 修订:在 Pyside2 的 5.15.2 版本中,从 ui 生成 py 文件过程,命令从 “uic” 变为 “pyside2-uic” Qt Designer 设计的 ui 文件,就是一个 xml 文件,通过 pyside-uic 可以转换成标准的.py 文件 。通过 QtDesi…

电商(淘宝1688京东拼多多等)API接口服务:提升商业效率和用户体验的关键

电商API接口服务:提升商业效率和用户体验的关键 随着电子商务的飞速发展,电商企业需要不断提升自身的业务能力和服务质量,以应对日益激烈的市场竞争。为了更好地满足商家和消费者的需求,电商API接口服务应运而生。本文将探讨电商…

Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)

星光下的赶路人star的个人主页 你必须赢过,才可以说不在乎输赢 文章目录 1、Flink部署1.1 集群角色1.2 Flink集群搭建1.2.1 集群启动1.2.2 向集群提交作业 1.3 部署模式1.3.1 会话模式(Session Mode)1.3.2 单作业模式(Per-Job Mod…

华为云云耀云服务器L实例评测|使用Linux系统与Docker部署.net/c#项目

目录 前言 如何在CentOS运行项目 登录CentOS 使用Rider打包 使用Visual Studio打包 项目运行 后台运行 开放端口 如何在Docker中运行项目 项目运行 前言 本章详细介绍,.net Core项目从打包到部署上华为云云耀云服务器L实例的过程与一些细节问题。在这里…

Outlook无需API开发连接钉钉群机器人,实现新增会议日程自动发送群消息通知

Outlook用户使用场景: 在企业中,会议和活动的顺利举行对于业务运转和团队协作至关重要。然而,计划的变动总是无法避免,这可能会导致其他人的计划受到影响,打乱原有的安排。为了解决这个问题,许多企业开始使…

ParallelGC 日志详解

GC 日志相关的 JVM 参数 与 GC 日志相关的 JVM 参数有如下 8 个: 参数名参数含义-XX:PrintGC输出简要 GC 日志-verbose:gc等同于 -XX:PrintGC-XX:PrintGCDetails输出详细 GC 日志-XX:PrintGCTimeStamps输出 GC 的时间戳(以 JVM 启动到当前的总时长&…

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像 项目介绍需要重点关注的几个文件构建cpu版本的docker构建gpu版本的docker(cuda11.2cudnn8) 阅读提示: (1)Paddle的Serving项目中,在t…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成

linux配环境心得:conda/本地配cuda,cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一,服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

强缓存和协商缓存的理解

强缓存和协商缓存是Web开发中常用的两种缓存策略 强缓存(Cache-Control和Expires):强缓存指的是在浏览器向服务器发送请求之前,直接从本地缓存中获取资源,而不去服务器验证资源是否过期。强缓存的判断依据是缓存响应头…

Ubuntu下通过python使用MySQL

参考资料 MySQL Connector/Python Developer Guidepython_mysql_tutorial 环境 Ubuntu 20.04Python 3.8.10MySQL Server 8.0.34mysql-connector-python 8.1.0 安装MySQL pip install mysql-connector-python # 注意,不要安装成 mysql-connector 了环境测试 注意…

WPF命令

在设计良好的Windows应用程序中,应用程序逻辑不应位于事件处理程序中,而应在更高层的方法中编写代码。其中的每个方法都代表单独的应用程序任务。每个任务可能依赖其他库。 使用这种设计最明显的方式是在需要的地方添加事件处理程序,并使用各…

八 动手学深度学习v2 ——卷积神经网络之卷积+填充步幅+池化

图像卷积总结 二维卷积层的核心计算是二维互相关运算。最简单的形式是,对二维输入数据和卷积核执行互相关操作,然后添加一个偏置。核矩阵和偏移是可学习的参数核矩阵大小是超参数 填充和步幅 padding和stride 填充: 在应用多层卷积时&…

Linux Debian12将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程,本文不做介绍。 gitee官网:https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git,可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

关于mysql数据文件损坏导致的mysql无法启动的问题

环境 rocky linux 9 (跟centos几乎一模一样) myqsl 8.0, 存储引擎使用innodb 问题描述 1. 服务器异常关机,重启启动后发现mysql无法连接,使用命令查看mysql状态: systemctl status mysqld 发现mysql服…

69、配置AWS服务,接收来自RTSP流的推送

基本思想:在上一篇的基础和视频教程之后,进行简单的aws服务,进行RTSP流的接收 第一步: 第二步:配置video_stream,记得选择香港节点 同时记录这个信息,后面的策略需要填充 第三步:进行策略设置 第四步:策略设置,选中右上角的创建策略 第五步、进行json填充 第六步:填…

抓取ajax加载的数据

""" https://www.duitang.com/napi/blogv2/list/by_search/?堆糖页面分析:使用Ajax加载,aferid是控制加载的图片和页面,从零开始,会提前加载下一页的Ajax数据第一页的图片是after_id从0到120,会提前…