Linux GDB:使用x命令读取不会';行不通

Linux GDB:使用x命令读取不会';行不通,linux,gdb,windows-subsystem-for-linux,Linux,Gdb,Windows Subsystem For Linux,我正在尝试对ELF 64位程序进行反向工程我在的指针上设置了一个断点。我了解到正在比较的值存储在rax和rbx中。当我使用x命令时(这里我使用x/s命令来获得字符串输出,但我也尝试了x),我得到一个错误,说,确切的命令是x/s$rax。print函数确实起作用,但这会给我原始数据(我想是十六进制),我需要字符串,有没有办法将值转换为字符串?我的系统是64位windows 10,我在windows的linux子系统中使用gdb 编辑 我使用GDB R(程序名称)启动我的GDB会话 节目信息: 然后

我正在尝试对ELF 64位程序进行反向工程
我在
的指针上设置了一个断点。我了解到正在比较的值存储在
rax
rbx
中。当我使用
x
命令时(这里我使用
x/s
命令来获得字符串输出,但我也尝试了
x
),我得到一个错误,说
,确切的命令是
x/s$rax
print
函数确实起作用,但这会给我原始数据(我想是十六进制),我需要字符串,有没有办法将值转换为字符串?
我的系统是64位windows 10,我在windows的linux子系统中使用gdb

编辑
我使用
GDB R
(程序名称)启动我的GDB会话 节目信息:
然后我运行
disassmain
查找比较输入的地址,这就是
strcmp@plt
是。
我复制地址并使用
b*0x8001168
设置断点。
插入断点后,我运行
runtestarg

现在程序在我的断点处停止。
我运行
info registers
,看看里面有没有什么东西。
当我尝试
x/s$rax
时,我得到以下输出。
print
命令确实有效,但我需要字符串值

我在这里读到,正在比较的值存储在rax和rbx中

这篇博文似乎完全错了——参数
strcmp()
无法在
x86\u 64
上的
rax
rbx
中,这要求它们必须在
rdi
rsi

查看它们的寄存器值,
rax
恰好包含与
rdi
相同的值,
rdx
恰好包含与
rsi
相同的值

事实上,他们

  • 使用
    rax
    rdx
    而不提及(或显然理解)原因和
  • 不要实际显示它们所指的拆卸

  • 表示低质量的内容。您可能应该停止阅读此源代码,使用更可靠的内容。

    不要描述您所做的,而是将其显示(作为一个完整的GDB会话)。“现状”这个问题相当于“有些东西不起作用”。如果你希望有人帮助你,你需要更加精确。我已经包括了一些我使用的输出和命令的屏幕截图。非常感谢你的回答。我可以查看$rsi和$rdi。谢谢你的帮助。