首页
社区
课程
招聘
[旧帖] [求助]GDB下极为基础的问题 0.00雪花
发表于: 2013-6-5 22:26 1907

[旧帖] [求助]GDB下极为基础的问题 0.00雪花

2013-6-5 22:26
1907
在GDB下,鄙人搞不清楚有关:

(1) 当编译程序时,compiler是否会在其中生成 EIP 指针?

(2) 还有 EIP 指针标记的是什么? 为什么能有多个值?
(gdb) break main
Breakpoint 1 at 0x......: file a.out, line 7.
(gdb) run
Starting programe: /home/zypeh/a.out

Breakpoint 1, main() at a.out:7
7                    for (i =0; i < 10; i++)
(gdb) info register eip
eip                          0x80.............          0x80................
这里指的是一个值^
但是为什么这里可以examine 4个值??
(gdb) x/4ub $eip
0x80...........           <main+16>         199   69   252   0  
可以科普一下吗?

(3) $eip 下的值是什么数据?我的意思是,那代表什么?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 516
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
eip寄存器中记录的是什么 在这个帖子里http://www.pediy.com/kssd/pediy10/85449.html
【EIP:指令寄存器,里面放着一个指针,指针永远指向下一条要执行的指令地址,CPU按照EIP寄存器所指位置取出指令和操作数,送入ALU(运算器)处理。可以说控制了EIP寄存器的内容就控制了应用程序,EIP指向那里,CPU就去那里执行指令,缓冲区溢出也就是精心构造数据来覆盖EIP寄存器的内容,使之执行我们的攻击代码】有说

关于第二个问题
examine命令,可以让用户查看指定内存中的值
(gdb)examine /nfu <address>
参数:
   n:一个正整数,表示显示几个单位的内存
   f:显示的格式,进制(u十六进制)或字符串(s)或指令(i)
   u:单位,b=1 字节, h=2 字节,w=4字节,g=8 字节。

楼主的使用方式是说,看eip中的四个字节的数据并且以十六进制显示出来。我的理解是,eip中的值代表的是cpu要执行的下一条指令的地址。
当你把问题梳理出来的时候,其实也可以百度一下谷歌一下的。
最后,谢谢楼主:),晚安。
2013-6-5 23:14
0
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,鄙人学习了。以我的了解,gdb的 examine 命令可以查看指定内存的值。
且可以查看 eip 指针的内容, 那么 查看两个 eip 单位就是:“查看指针所要指向下一条要执行的指令地址,下一个……”以此类推,对不对?
:)
2013-6-6 18:14
0
游客
登录 | 注册 方可回帖
返回
//