在本地主机的终端中启动gdbserver 7.7版,配置为“ x86_64-linux-gnu”,如下所示:
$ gdbserver --multi localhost:1234
Listening on port 1234
在IDA Pro 6.6版中打开一个新数据库,在代码中设置一个断点,选择“ Remote GDB
FFFFFFFFFFFFFFFF: process /home/benny/3-challenge has started (pid=0)
FFFFD8F8: got SIGTRAP signal (Trace/breakpoint trap) (exc.code 5, tid 27171)
IDA中弹出警告,提示以下消息:
FFFFD8F8: got SIGTRAP signal (Trace/breakpoint trap) (exc.code 5, tid 27171)
运行gdbserver的终端显示以下消息:
:
Remote debugging from host 127.0.0.1
Process /home/benny/3-challenge created; pid = 27171
我想SIGTRAP可能已经是一个问题,但是,我不明白为什么会得到它。我在做什么错?
通过忽略警告仍然可以走得更远:
IDA调试视图显示RIP在内存位置
FFFFD8F8
上,这是一个未开发的二进制文件的区域:MEMORY:FFFFD8F8 db ?;
在IDA中按F9会弹出一个“异常处理”对话框,如下图所示。执行调试会话和IDA输出窗口会打印
Debugger: process has exited (exit code 5)
运行gdbserver的终端上的输出会打印
Child terminated with signal = 0x5 (SIGTRAP)
readchar: Got EOF
Remote side has terminated connection. GDBserver will reopen the connection.
Listening on port 1234
如果您需要更多信息,请告诉我。
更新:我对GDB服务器感到厌烦,现在使用英特尔PIN进行调试,它的工作原理很吸引人。 IDA Pro。
#1 楼
通常,调试中断异常(SIGTRAP
)引发int 3
。IDA收到IDA时,会询问您是否将其传递给程序(未处理)。如果这样做,并且没有为
SIGTRAP
安装信号处理程序,则该程序将因出现SIGTRAP
错误而死亡。您想继续)或暂停以调查IDA中的状态。
评论
你在调试什么?它可能包含一些反调试方法。正如我在问题的第二句话中所说的那样:“我调试的程序是我自己编写的”。它非常简单,并且不包含反调试方法。
哎呀错过了。抱歉,您可以分享它,以便我尝试在我的盒子上重现吗?