gpt4 book ai didi

gdb - 如何在 gdb 中使用带有 FS 或 GS​​ 基址的逻辑地址?

转载 作者:行者123 更新时间:2023-12-04 01:10:40 42 4
gpt4 key购买 nike

gdb 提供读取或写入特定线性地址的功能,例如:

(gdb) x/1wx 0x080483e4
0x80483e4 <main>: 0x83e58955
(gdb)

但是你如何指定一个逻辑地址呢?我遇到了以下指令:
   0x0804841a <+6>:     mov    %gs:0x14,%eax

我如何在 gdb 中读取 "%gs:0x14"处的内存,或者将此逻辑地址转换为我可以在 x 中使用的线性地址命令?

注意:我知道我可以在这条指令后简单地阅读 %eax ,但这不是我关心的

最佳答案

how can i read the memory at "%gs:0x14" in gdb



您不能:GDB 无法知道 %gs 到哪个段指已经建立。

or translate this logical address to a linear address that i could use in x command



同样,一般情况下你不能这样做。但是,您似乎在 32 位 x86 Linux 上,并且您可以这样做—— %gs设置为通过 set_thread_area 指向线程描述符系统调用。

你可以做 catch syscall set_thread_area在 GDB 中,并检查参数(每个线程都会有一个这样的调用)。实际执行此操作的代码是 here .一旦你知道如何 %gs已经设置好了,只需在 base_addr中添加0x14即可,你就完成了。

关于gdb - 如何在 gdb 中使用带有 FS 或 GS​​ 基址的逻辑地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10354063/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com