在 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 的数据。
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 的数据。