我可以从 IDA 调试器向 gdbserver 发送 gdb 命令吗?

逆向工程 艾达 数据库
2021-06-16 11:27:30

我想通过 gdb 远程调试将 gdb 命令(如“backtrace”、“b *0xAAAAAAA”、“ib”、...)从 IDA 调试器发送到 gdbserver 并接收结果并将其打印到 IDA 的输出视图,我可以这样做吗?它?有人试过吗?

我在 IDA 帮助中发现了函数“SendDbgCommand”

向调试器引擎发送任意命令。返回: 命令输出。

注意:此功能可用于以下调试器:windbg、gdb、bochs

字符串 SendDbgCommand(字符串 cmd);

但是当我在 idc 脚本或 idapython 脚本中尝试时,它不起作用!

更多详情:

  • 我使用了 ida 6.1 远程 GDB 调试器,我的远程机器是 Ubuntu,运行命令

gdbserver --multi 本地主机:12345

作为正常的远程调试会话,一切正常

现在,我想在 ida GUI 提供的运算符旁边使用其他 gdb 命令(如上)

if s.startswith("IDC_FAILURE"):
    raise Exception, "Debugger command is available only when the debugger is active!"
  • 我也尝试在 idc 脚本中使用 SendDbgCommand 但我也没有工作,它返回 0

任何人都可以帮助我吗?太感谢了!

1个回答

您尝试使用的命令是在 GDB 可执行文件中实现的,而不是gdbserver. gdbserver实现了远程串行协议,和IDA是使用发送命令(读/写寄存器/存储器,设置断点等)和得到的结果。

由于 IDA 不使用 GDB 程序本身,因此它无法处理其命令。您需要使用 IDA 命令来控制可执行文件并检索信息。

底部的“GDB”命令行允许您发送所谓的“监控命令”,允许远程存根实现协议未涵盖的各种功能。例如,VMWare 的 GDB 存根支持“r”命令来获取有关某些寄存器的详细信息。