在 ubuntu 中使用 perl print 语句时,gdb 中的字节顺序打乱

Shuffled order of bytes in gdb when using perl print statement in ubuntu

run $(perl -e 'print "\xfd\x06\x40\x00" x 10')

当我 运行 我的程序使用这个参数时,我应该得到 0x004006fd 作为堆栈中的单词,但我得到的是这个单词的重新排列顺序,但从来没有正确的顺序,如下所示 -:

 0x7fffffffde00:    0xfd4006fd  0x06fd4006  0x4006fd40  0xfd4006fd
 0x7fffffffde10:    0x06fd4006  0x4006fd40  0xfd4006fd  

这里0x00不是刚来的,不知道应该用什么来写这个字节。 我什至尝试过

  run $(perl -e 'print pack("V",0x004006fd) x 10') 

但没有帮助。 我对这件事真的很陌生,请帮忙。 如果我必须在我的 ubuntu 终端或问题所在的地方做一些设置,我什至现在都不知道。

这些产生 FD 06 40 00:

"\xFD\x06\x40\x00"
pack("N", 0xFD064000)
pack("V", 0x004006FD)

这些产生 00 40 06 FD:

"\x00\x40\x06\xFD"
pack("N", 0x004006FD)
pack("V", 0xFD064000)

请注意,命令行参数是以 NUL 结尾的字符串,因此无法将以下任一字符串作为命令行参数传递:

FD 06 40 00 FD 06 40 00 ...       # Passes FD 06 40 00

00 40 06 FD 00 40 06 FD ...       # Passes 00

也许您应该重写 run 以接受十六进制数据,或接受来自 STDIN 的数据。