gpt4 book ai didi

python - 使用 gdb.value 更改 GDB 中的结构字段

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:14 25 4
gpt4 key购买 nike

我正在 gdb 中定义一个便利变量

>set $param = (T_packet*)malloc(sizeof(T_packet))

我可以通过Python检索它

>p = gdb_helper.parse_and_eval("$param")
<gdb.Value at 0x7f30b42f9170>

显示结构体的字段

>python print(p.dereference())

{ID_PACKET = 0 , L_PACKET = 0}

尝试更改字段(C 等效项:p->ID_PACKET=1)

p.dereference()["ID_PACKET"] = 1
>"Setting of struct elements is not currently supported"

有没有办法使用 GDB 的 Python API 更新 p 中 ID_Packet 字段的值?

最佳答案

目前无法使用 Value API 设置值。这只是 gdb 中的一个小漏洞(我查看了但找不到这方面的错误,所以也许归档一个是一件好事)。

同时,您可以使用gdb.parse_and_eval解决这个问题,但有一点困难。这个想法是获取相关字段的地址,然后形成一个像 *(TYPE *) 0xADDR = VALUE 这样的表达式。或者,您可以使用 Inferior.write_memory 直接写入内存。

这两种方法在某些情况下都会失败,例如,您无法以这种方式写入寄存器,从而阻止其在由于 SRA 优化而被分割的结构上工作。

关于python - 使用 gdb.value 更改 GDB 中的结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41809062/

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