linux /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/kcore

Elf file type is CORE (Core file)
Entry point 0x0
There are 10 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  NOTE           0x0000000000000270 0x0000000000000000 0x0000000000000000
                 0x0000000000001d24 0x0000000000000000         0x0
  LOAD           0x00007fff81002000 0xffffffff81000000 0x0000000001000000
                 0x0000000002a2c000 0x0000000002a2c000  RWE    0x1000
  LOAD           0x0000490000002000 0xffffc90000000000 0xffffffffffffffff
                 0x00001fffffffffff 0x00001fffffffffff  RWE    0x1000
  LOAD           0x00007fffc0002000 0xffffffffc0000000 0xffffffffffffffff
                 0x000000003f000000 0x000000003f000000  RWE    0x1000
  LOAD           0x0000088000003000 0xffff888000001000 0x0000000000001000
                 0x000000000009f000 0x000000000009f000  RWE    0x1000
  LOAD           0x00006a0000002000 0xffffea0000000000 0xffffffffffffffff
                 0x0000000000003000 0x0000000000003000  RWE    0x1000
  LOAD           0x0000088000202000 0xffff888000200000 0x0000000000200000
                 0x00000000f7e00000 0x00000000f7e00000  RWE    0x1000
  LOAD           0x00006a000000a000 0xffffea0000008000 0xffffffffffffffff
                 0x0000000003df8000 0x0000000003df8000  RWE    0x1000
  LOAD           0x0000088100002000 0xffff888100000000 0x0000000100000000
                 0x0000000105000000 0x0000000105000000  RWE    0x1000
  LOAD           0x00006a0004002000 0xffffea0004000000 0xffffffffffffffff
                 0x0000000004140000 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在内存中的真实数据,该数据可以判断系统内存中是否存在攻击。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值