我发现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
评论
您没有充分解释已经尝试过的内容,使用的配置以及运行它时遇到的问题。尝试提供更多细节。好的,我要添加更多细节!