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

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


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

注意:该函数可用于以下调试器:windbg,
gdb,bochs

string SendDbgCommand(string cmd);


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

更多详细信息:


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


gdbserver --multi localhost:12345


作为正常的远程调试会话,一切都很好。

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


我从以下网址尝试了idapython脚本:https://code.google.com/p/idapython/source/browse/trunk/Scripts/DbgCmd.py?r=344
,但执行时不起作用SendDbgCommand,它返回IDC_FAILURE


if s.startswith("IDC_FAILURE"):
    raise Exception, "Debugger command is available only when the debugger is active!"




我也尝试在idc脚本中使用SendDbgCommand,但我也没有用,它返回0

任何人都可以帮助我p租?非常感谢!

评论

您没有充分解释已经尝试过的内容,使用的配置以及运行它时遇到的问题。尝试提供更多细节。

好的,我要添加更多细节!

#1 楼

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

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

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

评论


啊...所以gdbserver有专用命令,而ida通过远程串行协议与之通信,而SendDbgCommand用于发送gdbserver的专用命令?

–user3746442
2014年8月27日12:55