gdb汇编调试

阅读: 评论:0

gdb汇编调试

gdb汇编调试

gdb汇编调试

GDB调试汇编堆栈分析

代码:

 


sudo apt-get install libc6-dev-i386命令安装所需库

    •  进入之后先在main函数处设置一个断点,再run一下,使用disassemble指令获取汇编代码,用i(info) r(registers)指令查看各寄存器的值:



    • 可见此时主函数的栈基址为0xffffd098,用x(examine)指令查看内存地址中的值,目前%esp所指为0,%ebp为0

    • 下面展示每一步时%esp、%ebp和堆栈内容的变化:

    • i

    • call指令将下一条指令的地址入栈,此时%esp,%ebp和堆栈的值为:

    •  

       

       

    • 将上一个函数的基址入栈,从当前%esp开始作为新基址:

    •  

    • 先为传参做准备:

    •  



    • 实参的计算在%eax中进行:

    •  

    • 实参入栈06

    • call指令将下一条指令的地址入栈

               

               

               计算short+int

               

                

                

               

               

              

 

                 

                  

                

                pop %ebp指令将栈顶弹到%ebp中,同时%esp增加4字节:

                

               

               

              pop %ebp指令将栈顶弹到%ebp中,同时%esp增加4字节:

              

                

 

               

              ret指令将栈顶弹给%eip:

              

              

             

             因为函数f修改了%esp所以用leave指令恢复。leave指令先将%esp对其到%ebp,然后把栈顶弹给%ebp:

              

 

             

             

 

              

              

              

             

  • 主函数汇编代码,并结束栈帧的调用。

指令espebp堆栈
push $0x8
0xffffd098 
0xffffd0980x0
call 0x80483ef
0xffffd094 
0xffffd0980x8 0x0
push %ebp
0xffffd090 
0xffffd0980x8048412 0x8 0x0
mov %esp,%ebp0xffffd08c0xffffd0980xffffd098 0x8048412 0x8 0x0
mov 0x804a01c,%edx0xffffd08c0xffffd08c0xffffd098 0x8048412 0x8 0x0
 mov 0x8(%ebp),%eax 0xffffd08c 0xffffd08c

 0xffffd098 0x8048412 

0x8 0x0

 add %edx ,%eax 0xffffd08c0xffffd08c 0xffffd098 0x8048412 0x8 0x0
 push %eax 0xffffd08c 0xffffd08c 0xffffd098 0x8048412 0x8 0x0
 call 0x80483db<g> 0xffffd088 0xffffd08c 0xa 0xffffd098 0x8048412 0x8 0x0
 push %ebp     0xffffd084 0xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
 move %esp %ebp 0xffffd080 0xffffd08c 0xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
 movzwl0xffffd080      0xffffd080 0xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
 movswl %ax %edx 0xffffd0080 0xffffd080 0xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
 mov 0x8(%ebp),%eax 0xffffd080 0xffffd080 0xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
 add %edx %eax 0xffffd080 0xffffd080 
0xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
pop %ebp0xffffd0800xffffd0800xffffd08c 0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
ret0xffffd0840xffffd08c0x8048403 0xa 0xffffd098 0x8048412 0x8 0x0
add $0x4 ,%esp0xffffd080xffffd08c0xa 0xffffd098 0x8048412 0x8 0x0
leave 0xffffd08c0xffffd08c0xffffd098 0x8048412 0x8 0x0
ret0xffffd090 0xffffd0980x8048412 0x8 0x0
add $0x4 ,%esp0xffffd090xffffd0980x8 0x0
leave0xffffd0980xffffd0980x0
ret0xffffd09c0x0 
posted on 2016-12-21 16:39  20145306张文锦 阅读( ...) 评论( ...) 编辑 收藏

转载于:.html

本文发布于:2024-01-29 16:15:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170651611416515.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:gdb
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23