英特尔组装无法找到Argv地址

时间:2015-03-29 16:42:30

标签: assembly

我不知道这是否是一个广泛的问题,但我很难找到参数矢量字符串。这是我的GDB输出。

(gdb) run test
Starting program: /root/Desktop/booksrc/a.out test
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000

Breakpoint 1, main (argc=2, argv=0x7fffffffe468) at convert2.c:14
14      count = atoi(argv[2]); // convert the 2nd arg into an integer
(gdb) x/3xw 0x7fffffffe468
0x7fffffffe468: 0xffffe6d2  0x00007fff  0xffffe6ee
(gdb) x/3xw 0xffffe6d2
0xffffe6d2: Cannot access memory at address 0xffffe6d2
(gdb) x/3xw 0x00007fff
0x7fff: Cannot access memory at address 0x7fff

那么我的第一个参数应该是什么,/root/Desktop/booksrc/a.out是无法访问的,以及测试参数。是什么给了什么?

1 个答案:

答案 0 :(得分:0)

您必须在命令中使用g而不是wg代表"巨人"或8字节,因为你在64位机器上,而不是x/3xw你想要x/3xg,你会得到这样的东西:

(gdb) x/3xg 0x7fff5fbff900
0x7fff5fbff900: 0x00007fff5fbffa38  0x00007fff5fbffa6a
0x7fff5fbff910: 0x0000000000000000

然后x/s 0x00007fff5fbffa38您将看到argv参数,它是您的程序的路径,第二个0x00007fff5fbffa6a将是" test"。