gs的虚拟地址:0x14

时间:2014-02-25 15:38:12

标签: gdb stack memory-segmentation gdt

如果我们用gcc编译一些C代码,我们经常会看到以下汇编结果

0x08048494 <+0>:   push   ebp
0x08048495 <+1>:   mov    ebp,esp
0x08048497 <+3>:   and    esp,0xfffffff0
0x0804849a <+6>:   sub    esp,0x130
0x080484a0 <+12>:   mov    eax,DWORD PTR [ebp+0xc]
0x080484a3 <+15>:   mov    DWORD PTR [esp+0x1c],eax
0x080484a7 <+19>:   mov    eax,gs:0x14

这是一个简单的功能序幕。 从+19行,我们可以看到堆栈保护值是 从gs:0x14获得。 我的问题是,我可以知道gs的实际虚拟地址:0x14与gdb? gs段选择器值表示GDT的偏移量 但是,诸如gdb之类的用户级进程无法访问GDT信息。 如何使用gdb或其他调试器找出gs段的基址? 这不可能吗?

提前谢谢。

0 个答案:

没有答案