首页 > 其他分享 >core文件里的全局变量偏移了16字节

core文件里的全局变量偏移了16字节

时间:2023-09-25 14:14:48浏览次数:46  
标签:core 0x00000000 casa struct 16 avl gdb table 全局变量

源代码里面有这个几张表:

 126 static struct avl_table *l2_addr_tree;
 127 static struct avl_table *casa_neighbor_table;
 128 static struct avl_table *casa_ecmp_table;
 129 static struct avl_table *casa_neighbor6_table;
 130 static struct avl_table *casa_nh_route_table;
 131 static struct avl_table *casa_nh_route6_table;
 132
 133 static struct avl_table *casa_mpls_ilm_table;

gdb 中查看一下 l2_addr_tree 的内容

(gdb) p *l2_addr_tree
$2 = {
  avl_root = 0xc50e038,
  avl_compare = 0x3b7dce4 <casa_nh_route_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 5191,
  avl_generation = 134163
}

avl_compare 这个指针明显不对,于是查看一下其他的表,统计如下

08da20b4 b l2_addr_tree                           0x449710b8      avl_compare = casa_nh_route_compare
08da20b8 b casa_neighbor_table                    0x449710d8      avl_compare = casa_nh_route6_compare
08da20bc b casa_ecmp_table                        0x44975140      avl_compare = casa_mpls_ilm_compare
08da20c0 b casa_neighbor6_table                   0x4
08da20c4 b casa_nh_route_table                    0
08da20c8 b casa_nh_route6_table                   0
08da20cc b casa_mpls_ilm_table                    0

很明显是有错位的

查看一下 l2_addr_tree 附近的内存

(gdb) x/30x &l2_addr_tree-8
0x8da2094 <casa_neighor_tbl_rwlock>:    0x00000000      0x00000000      0x00000000      0x00000000
0x8da20a4 <casa_neighor_tbl_rwlock+16>: 0x44971038      0x44971058      0x44971078      0x44971098
0x8da20b4 <l2_addr_tree>:       0x449710b8      0x449710d8      0x44975140      0x00000004
0x8da20c4 <casa_nh_route_table>:        0x00000000      0x00000000      0x00000000      0x00000000
0x8da20d4 <bnet_ip6_ll_tree>:   0x00000001      0x00000000      0x00000000      0x0000039f
0x8da20e4 <my_mac_set>: 0x0000039f      0x03ba55c8      0x00000000      0x00000001
0x8da20f4 <rmt_gige_port_link_stat>:    0x00000000      0x00000000      0x00000000      0x00000017
0x8da2104 <failover_id.304260>: 0x102490b2      0x00000000

可以看到前面有 l2_addr_tree 的前面还有4个可访问的指针
再仔细看一下,跟这几涨表都对上了,但是符号和地址对不上

(gdb) p *((struct avl_table *)0x44971038)     <----- l2_addr_tree
$5 = {
  avl_root = 0x0,
  avl_compare = 0x3b80cec <l2_addr_entry_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 0,
  avl_generation = 0
}
(gdb) p *((struct avl_table *)0x44971058)     <----- casa_neighbor_table
$6 = {
  avl_root = 0x51355d48,
  avl_compare = 0x3b7da98 <casa_neighbor_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 12456,
  avl_generation = 1087166
}
(gdb) p *((struct avl_table *)0x44971078)     <----- casa_ecmp_table
$7 = {
  avl_root = 0x505f3d38,
  avl_compare = 0x3b7dc0c <casa_ecmp_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 2,
  avl_generation = 0
}
(gdb) p *((struct avl_table *)0x44971098)     <----- casa_neighbor6_table
$8 = {
  avl_root = 0x51a25258,
  avl_compare = 0x3b7db10 <casa_neighbor6_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 7292,
  avl_generation = 361599
}
(gdb) p *((struct avl_table *)0x449710b8)     <----- casa_nh_route_table
$9 = {
  avl_root = 0xc50e038,
  avl_compare = 0x3b7dce4 <casa_nh_route_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 5191,
  avl_generation = 134163
}
(gdb) p *((struct avl_table *)0x449710d8)     <----- casa_nh_route6_table
$10 = {
  avl_root = 0x51a25270,
  avl_compare = 0x3b7dd9c <casa_nh_route6_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 8394,
  avl_generation = 433270
}
(gdb) p *((struct avl_table *)0x44975140)     <----- casa_mpls_ilm_table
$11 = {
  avl_root = 0x50465680,
  avl_compare = 0x3b7dec4 <casa_mpls_ilm_compare>,
  avl_param = 0x0,
  avl_alloc = 0x780d730,
  avl_count = 36,
  avl_generation = 19
}

可见,是生成core的时候,全局变量区的地址计算错误,偏移了16字节

标签:core,0x00000000,casa,struct,16,avl,gdb,table,全局变量
From: https://www.cnblogs.com/fallenmoon/p/17727818.html

相关文章

  • strncpy 出core
    core的堆栈是这样子的:(gdb)bt#00x00007ffff4a96a7cinpthread_kill()from/lib/x86_64-linux-gnu/libc.so.6#10x00007ffff4a42476inraise()from/lib/x86_64-linux-gnu/libc.so.6#20x00007ffff4a287f3inabort()from/lib/x86_64-linux-gnu/libc.so.6#30......
  • Jenkins 命令执行 -- jetty 敏感信息泄露 --(CVE-2021-2816)&&(CVE-2017-1000353)&&(C
    Jenkins命令执行--jetty敏感信息泄露--(CVE-2021-2816)&&(CVE-2017-1000353)&&(CVE-2018-1000861)jetty敏感信息泄露(CVE-2021-28169)漏洞简介对于<=9.4.40、<=10.0.2、<=11.0.2的EclipseJetty版本,对带有双重编码路径的ConcatServlet的请求可以访问WEB-INF目录......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》第三周学习笔记
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/
    今天解决了一个很早之前的问题!!!无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]之前一直以为是jar包不匹配,但是改了jar包之后连uri都分辨不出来了后来在网上查到是tomcat的问题,将tomcat的conf目录下的catalina.properties的tomc......
  • Some Recent Thoughts Wrritten By NiuJiawen-2019141490165
    Recently,manystudentswhoarejunioryeararetakingpartininterviewsforexemptstudents.Somehaveobtainedsatisfactoryoffers,whereas,othersthinkitistoohardtogetawonderfuloffer. Andthereisnodoubtthatthelatterwillbefrustrated......
  • 易我数据恢复EaseUS Data Recovery Wizard 16.0技术员终身版你的数据恢复神器
    易我数据恢复EaseUSDataRecoveryWizard16.0技术员终身版为全球提供数据恢复方案,用于误删数据数据,电脑误删文件恢复,格式化硬盘数据恢复、手机U盘数据恢复等。RAID磁盘阵列数据恢复,分区丢失及其它未知原因丢失的数据恢复、简单易用轻松搞定数据恢复。EaseUSDataRecoveryWizar......
  • P1631 序列合并
    P1631序列合并思路思路一题目要求的是二维的,太麻烦,所以我们可以将其用一维划分,将每一组都变成线性的,那线性的就很好求了,直接排序然后从前往后算即可,那么就可以将这\(n\)组合并,但如果是整个都算出来再合并就会是\(O(n^2)\)的,所以可以只记录当前的,那么对于当前的最小的状态,......
  • 网络分析利器:在 Ubuntu 16.04 上安装 Bro
    Bro是一个开源的网络分析框架,侧重于网络安全监控。这是一项长达15年的研究成果,被各大学、研究实验室、超级计算机中心和许多开放科学界广泛使用。它主要由伯克利国际计算机科学研究所和伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心开发。Bro的功能包括:Bro的脚本语言......
  • Angular 16+ 基础教程 – 开篇和目录
    前言前阵子我开始写 Angular复习与进阶系列,写着写着,发现写不下去。思来想去,感觉原因是主题定的不好。复习与进阶,意味着看的人就要有基础,但是这个基础到底要多少又说不清楚,更糟糕的是这两年Angular团队重组后尽然开始做新功能了,而且有越做越多的迹象,所以这个说这个基础更加......
  • flask框架在Centos正常启动后到Windows浏览器访问(http://192.168.124.129:5550/)提示无
    1、flask在centos正常启动 2、然后复制链接到window访问,提示无法访问3、排查下,Linux和Windows互相ping下WindowpingLinuxIP LinuxpingWindowIP如上能够正常ping通,说明网段是正常的4、再排查下,Linux是不是防火墙没有关闭查看防火墙状态命令:systemctlstatusfir......