GDB 有一个相当健壮的 API,它在运行时暴露给 Python。它允许检查各种类型,但似乎不允许创建类型。
但是,可以通过在运行时加载目标文件来手动添加类型 ( https://stackoverflow.com/q/7272558 )。
有没有办法gdb.Type在运行时添加或创建新对象?
其目的是允许随后的存储器检查经由gdb.Value.cast到type.pointer(),然后.dereference()天。这比手动逐字段反序列化数据要好得多/容易得多。
或者,我认为我可以以编程方式加载一个目标文件。看起来 GDB 非常乐意为符号/类型目的加载跨架构的目标文件。为了不杀死任何真实/有用的符号,或创建误导性的符号,应使用不存在的地址。但是,.o在未映射的地址加载 a需要用户验证(键入y),因此从gdb.execute(...)它完成后会完全失败。