文章目录
- 问题
- 分析
- 参数确定
- 确定代码逻辑
- 解决
问题
今天碰到一例:
#0 0xf7f43129 in __kernel_vsyscall ()
#1 0xf6942b16 in raise () from /lib/libc.so.6
#2 0xf6928e64 in abort () from /lib/libc.so.6
#3 0xf6986e8c in __libc_message () from /lib/libc.so.6
#4 0xf6990fcf in malloc_printerr () from /lib/libc.so.6
#5 0xf69917ab in unlink_chunk.isra () from /lib/libc.so.6
#6 0xf69925fa in _int_free () from /lib/libc.so.6
#7 0xf6945487 in __run_exit_handlers () from /lib/libc.so.6
#8 0xf6945537 in exit () from /lib/libc.so.6
分析
这里可以看出来,在做exit退出时出现了异常;
查看unlink_chunk函数的汇编,出现coredump时的地址是 817ab,这里可以通过寄存器esi的值算出来;参数地址:
81795: 89 51 14 mov %edx,0x14(%ecx)