GDB:使用 x 命令读取不起作用

GDB: reading with the x command doesn't work

我正在尝试对 ELF 64 位程序进行逆向工程。
我在<strcmp@plt> 的指针上设置了一个断点。我读到 here 正在比较的值存储在 raxrbx 中。当我使用 x 命令时(这里我使用 x/s 命令来获取字符串输出,但我也尝试过使用 x)我收到一条错误消息 <error: Cannont access memory at address *some address*>,确切的命令是x/s $raxprint 函数确实有效,但这给了我原始数据(我认为是十六进制?)我需要字符串,有没有办法将值转换为字符串?
我的系统是 64 位 windows 10,我在 windows.

的 linux 子系统中使用 gdb

编辑
我用 gdb R(程序名称)开始我的 GDB 会话 节目信息:
然后我 运行 disass main 找到我的输入比较的地址,这就是 strcmp@plt 所在的位置。
我复制地址并使用 b * 0x8001168 设置断点。
我插入断点后,我运行run TestArg
现在程序在我的断点处停止了。
我运行info registers看看里面有没有东西,有。
当我尝试 x/s $rax 时,我得到以下输出。
print 命令确实有效,但我需要字符串值。

I read here that the values that are being compared are stored in rax and rbx.

那个博客 post 似乎是完全错误的—— strcmp() 的参数不可能在 raxrbxx86_64 ] -- Linux / x86_64 calling convention 要求 它们位于 rdirsi.

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

相同的值

他们

的事实
  1. 使用 raxrdx 而不提及(或明显理解)为什么
  2. 实际上并没有显示他们所指的反汇编

表示低质量的内容。您可能应该停止阅读此来源,并使用更可靠的东西。