gpt4 book ai didi

linux - 我如何找到这个 al 寄存器中的值?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:31 25 4
gpt4 key购买 nike

我正在做一个处理 x86 汇编语言的二进制炸弹实验室作业(我相信是 at&t)。我正在运行我的代码并走到最后,但最后我将我的 306 值与这个 %al 寄存器进行比较,我不知道如何获得它的值,因为我尝试了 x 和 x/d对于 al 和 $al,它找不到它,我如何找到它的值(value)。这是第 327 行。谢谢。

1 2 120

Breakpoint 1, 0x08048da4 in phase_5 ()

Missing separate debuginfos, use: debuginfo-install glibc-2.17-106.el7_2.8.i686

(gdb) disas

Dump of assembler code for function phase_5:

=> 0x08048da4 <+0>: sub $0x3c,%esp

0x08048da7 <+3>: lea 0x2c(%esp),%eax

0x08048dab <+7>: mov %eax,0x10(%esp)

0x08048daf <+11>: lea 0x27(%esp),%eax

0x08048db3 <+15>: mov %eax,0xc(%esp)

0x08048db7 <+19>: lea 0x28(%esp),%eax

0x08048dbb <+23>: mov %eax,0x8(%esp)

0x08048dbf <+27>: movl $0x804a54c,0x4(%esp)

0x08048dc7 <+35>: mov 0x40(%esp),%eax

0x08048dcb <+39>: mov %eax,(%esp)

0x08048dce <+42>: call 0x8048900 <__isoc99_sscanf@plt>

0x08048dd3 <+47>: cmp $0x2,%eax

0x08048dd6 <+50>: jg 0x8048ddd <phase_5+57>

0x08048dd8 <+52>: call 0x8049515 <explode_bomb>

0x08048ddd <+57>: cmpl $0x7,0x28(%esp)

0x08048de2 <+62>: ja 0x8048ee1 <phase_5+317>

0x08048de8 <+68>: mov 0x28(%esp),%eax

0x08048dec <+72>: jmp *0x804a5a0(,%eax,4)

0x08048df3 <+79>: mov $0x67,%eax

0x08048df8 <+84>: cmpl $0x2c5,0x2c(%esp)

0x08048e00 <+92>: je 0x8048eeb <phase_5+327>

0x08048e06 <+98>: call 0x8049515 <explode_bomb>

0x08048e0b <+103>: mov $0x67,%eax

0x08048e10 <+108>: jmp 0x8048eeb <phase_5+327>

0x08048e15 <+113>: mov $0x73,%eax

0x08048e1a <+118>: cmpl $0x78,0x2c(%esp)

---Type <return> to continue, or q <return> to quit---q

Quit

(gdb) until *0x08048dd6

0x08048dd6 in phase_5 ()

(gdb) disas

Dump of assembler code for function phase_5:

0x08048da4 <+0>: sub $0x3c,%esp

0x08048da7 <+3>: lea 0x2c(%esp),%eax

0x08048dab <+7>: mov %eax,0x10(%esp)

0x08048daf <+11>: lea 0x27(%esp),%eax

0x08048db3 <+15>: mov %eax,0xc(%esp)

0x08048db7 <+19>: lea 0x28(%esp),%eax

0x08048dbb <+23>: mov %eax,0x8(%esp)

0x08048dbf <+27>: movl $0x804a54c,0x4(%esp)

0x08048dc7 <+35>: mov 0x40(%esp),%eax

0x08048dcb <+39>: mov %eax,(%esp)

0x08048dce <+42>: call 0x8048900 <__isoc99_sscanf@plt>

0x08048dd3 <+47>: cmp $0x2,%eax

=> 0x08048dd6 <+50>: jg 0x8048ddd <phase_5+57>

0x08048dd8 <+52>: call 0x8049515 <explode_bomb>

0x08048ddd <+57>: cmpl $0x7,0x28(%esp)

0x08048de2 <+62>: ja 0x8048ee1 <phase_5+317>

0x08048de8 <+68>: mov 0x28(%esp),%eax

0x08048dec <+72>: jmp *0x804a5a0(,%eax,4)

0x08048df3 <+79>: mov $0x67,%eax

0x08048df8 <+84>: cmpl $0x2c5,0x2c(%esp)

0x08048e00 <+92>: je 0x8048eeb <phase_5+327>

0x08048e06 <+98>: call 0x8049515 <explode_bomb>

0x08048e0b <+103>: mov $0x67,%eax

0x08048e10 <+108>: jmp 0x8048eeb <phase_5+327>

0x08048e15 <+113>: mov $0x73,%eax

0x08048e1a <+118>: cmpl $0x78,0x2c(%esp)

---Type <return> to continue, or q <return> to quit---q

Quit

(gdb) ni

0x08048ddd in phase_5 ()

(gdb) disas

Dump of assembler code for function phase_5:

0x08048da4 <+0>: sub $0x3c,%esp

0x08048da7 <+3>: lea 0x2c(%esp),%eax

0x08048dab <+7>: mov %eax,0x10(%esp)

0x08048daf <+11>: lea 0x27(%esp),%eax

0x08048db3 <+15>: mov %eax,0xc(%esp)

0x08048db7 <+19>: lea 0x28(%esp),%eax

0x08048dbb <+23>: mov %eax,0x8(%esp)

0x08048dbf <+27>: movl $0x804a54c,0x4(%esp)

0x08048dc7 <+35>: mov 0x40(%esp),%eax

0x08048dcb <+39>: mov %eax,(%esp)

0x08048dce <+42>: call 0x8048900 <__isoc99_sscanf@plt>

0x08048dd3 <+47>: cmp $0x2,%eax

0x08048dd6 <+50>: jg 0x8048ddd <phase_5+57>

0x08048dd8 <+52>: call 0x8049515 <explode_bomb>

=> 0x08048ddd <+57>: cmpl $0x7,0x28(%esp)

0x08048de2 <+62>: ja 0x8048ee1 <phase_5+317>

0x08048de8 <+68>: mov 0x28(%esp),%eax

0x08048dec <+72>: jmp *0x804a5a0(,%eax,4)

0x08048df3 <+79>: mov $0x67,%eax

0x08048df8 <+84>: cmpl $0x2c5,0x2c(%esp)

0x08048e00 <+92>: je 0x8048eeb <phase_5+327>

0x08048e06 <+98>: call 0x8049515 <explode_bomb>

0x08048e0b <+103>: mov $0x67,%eax

0x08048e10 <+108>: jmp 0x8048eeb <phase_5+327>

0x08048e15 <+113>: mov $0x73,%eax

0x08048e1a <+118>: cmpl $0x78,0x2c(%esp)

---Type <return> to continue, or q <return> to quit---q

Quit

(gdb) ni

0x08048de2 in phase_5 ()

(gdb) ni

0x08048de8 in phase_5 ()

(gdb) disas

Dump of assembler code for function phase_5:

0x08048da4 <+0>: sub $0x3c,%esp

0x08048da7 <+3>: lea 0x2c(%esp),%eax

0x08048dab <+7>: mov %eax,0x10(%esp)

0x08048daf <+11>: lea 0x27(%esp),%eax

0x08048db3 <+15>: mov %eax,0xc(%esp)

0x08048db7 <+19>: lea 0x28(%esp),%eax

0x08048dbb <+23>: mov %eax,0x8(%esp)

0x08048dbf <+27>: movl $0x804a54c,0x4(%esp)

0x08048dc7 <+35>: mov 0x40(%esp),%eax

0x08048dcb <+39>: mov %eax,(%esp)

0x08048dce <+42>: call 0x8048900 <__isoc99_sscanf@plt>

0x08048dd3 <+47>: cmp $0x2,%eax

0x08048dd6 <+50>: jg 0x8048ddd <phase_5+57>

0x08048dd8 <+52>: call 0x8049515 <explode_bomb>

0x08048ddd <+57>: cmpl $0x7,0x28(%esp)

0x08048de2 <+62>: ja 0x8048ee1 <phase_5+317>

=> 0x08048de8 <+68>: mov 0x28(%esp),%eax

0x08048dec <+72>: jmp *0x804a5a0(,%eax,4)

0x08048df3 <+79>: mov $0x67,%eax

0x08048df8 <+84>: cmpl $0x2c5,0x2c(%esp)

0x08048e00 <+92>: je 0x8048eeb <phase_5+327>

0x08048e06 <+98>: call 0x8049515 <explode_bomb>

0x08048e0b <+103>: mov $0x67,%eax

0x08048e10 <+108>: jmp 0x8048eeb <phase_5+327>

0x08048e15 <+113>: mov $0x73,%eax

0x08048e1a <+118>: cmpl $0x78,0x2c(%esp)

---Type <return> to continue, or q <return> to quit---q

Quit

(gdb) ni

0x08048dec in phase_5 ()

(gdb) ni

0x08048e15 in phase_5 ()

(gdb) disas

Dump of assembler code for function phase_5:

0x08048da4 <+0>: sub $0x3c,%esp

0x08048da7 <+3>: lea 0x2c(%esp),%eax

0x08048dab <+7>: mov %eax,0x10(%esp)

0x08048daf <+11>: lea 0x27(%esp),%eax

0x08048db3 <+15>: mov %eax,0xc(%esp)

0x08048db7 <+19>: lea 0x28(%esp),%eax

0x08048dbb <+23>: mov %eax,0x8(%esp)

0x08048dbf <+27>: movl $0x804a54c,0x4(%esp)

0x08048dc7 <+35>: mov 0x40(%esp),%eax

0x08048dcb <+39>: mov %eax,(%esp)

0x08048dce <+42>: call 0x8048900 <__isoc99_sscanf@plt>

0x08048dd3 <+47>: cmp $0x2,%eax

0x08048dd6 <+50>: jg 0x8048ddd <phase_5+57>

0x08048dd8 <+52>: call 0x8049515 <explode_bomb>

0x08048ddd <+57>: cmpl $0x7,0x28(%esp)

0x08048de2 <+62>: ja 0x8048ee1 <phase_5+317>

0x08048de8 <+68>: mov 0x28(%esp),%eax

0x08048dec <+72>: jmp *0x804a5a0(,%eax,4)

0x08048df3 <+79>: mov $0x67,%eax

0x08048df8 <+84>: cmpl $0x2c5,0x2c(%esp)

0x08048e00 <+92>: je 0x8048eeb <phase_5+327>

0x08048e06 <+98>: call 0x8049515 <explode_bomb>

0x08048e0b <+103>: mov $0x67,%eax

0x08048e10 <+108>: jmp 0x8048eeb <phase_5+327>

=> 0x08048e15 <+113>: mov $0x73,%eax

0x08048e1a <+118>: cmpl $0x78,0x2c(%esp)

---Type <return> to continue, or q <return> to quit---q

Quit

(gdb) ni

0x08048e1a in phase_5 ()

(gdb) x/d $esp+0x2c

0xffffce9c: 120

(gdb) ni

0x08048e1f in phase_5 ()

(gdb) ni

0x08048eeb in phase_5 ()

(gdb) disas

Dump of assembler code for function phase_5:

0x08048da4 <+0>: sub $0x3c,%esp

0x08048da7 <+3>: lea 0x2c(%esp),%eax

0x08048dab <+7>: mov %eax,0x10(%esp)

0x08048daf <+11>: lea 0x27(%esp),%eax

0x08048db3 <+15>: mov %eax,0xc(%esp)

0x08048db7 <+19>: lea 0x28(%esp),%eax

0x08048dbb <+23>: mov %eax,0x8(%esp)

0x08048dbf <+27>: movl $0x804a54c,0x4(%esp)

0x08048dc7 <+35>: mov 0x40(%esp),%eax

0x08048dcb <+39>: mov %eax,(%esp)

0x08048dce <+42>: call 0x8048900 <__isoc99_sscanf@plt>

0x08048dd3 <+47>: cmp $0x2,%eax

0x08048dd6 <+50>: jg 0x8048ddd <phase_5+57>

0x08048dd8 <+52>: call 0x8049515 <explode_bomb>

0x08048ddd <+57>: cmpl $0x7,0x28(%esp)

0x08048de2 <+62>: ja 0x8048ee1 <phase_5+317>

0x08048de8 <+68>: mov 0x28(%esp),%eax

0x08048dec <+72>: jmp *0x804a5a0(,%eax,4)

0x08048df3 <+79>: mov $0x67,%eax

0x08048df8 <+84>: cmpl $0x2c5,0x2c(%esp)

0x08048e00 <+92>: je 0x8048eeb <phase_5+327>

0x08048e06 <+98>: call 0x8049515 <explode_bomb>

0x08048e0b <+103>: mov $0x67,%eax

0x08048e10 <+108>: jmp 0x8048eeb <phase_5+327>

0x08048e15 <+113>: mov $0x73,%eax

0x08048e1a <+118>: cmpl $0x78,0x2c(%esp)

---Type <return> to continue, or q <return> to quit---

0x08048e1f <+123>: je 0x8048eeb <phase_5+327>

0x08048e25 <+129>: call 0x8049515 <explode_bomb>

0x08048e2a <+134>: mov $0x73,%eax

0x08048e2f <+139>: jmp 0x8048eeb <phase_5+327>

0x08048e34 <+144>: mov $0x64,%eax

0x08048e39 <+149>: cmpl $0x1fd,0x2c(%esp)

0x08048e41 <+157>: je 0x8048eeb <phase_5+327>

0x08048e47 <+163>: call 0x8049515 <explode_bomb>

0x08048e4c <+168>: mov $0x64,%eax

0x08048e51 <+173>: jmp 0x8048eeb <phase_5+327>

0x08048e56 <+178>: mov $0x66,%eax

0x08048e5b <+183>: cmpl $0x363,0x2c(%esp)

0x08048e63 <+191>: je 0x8048eeb <phase_5+327>

0x08048e69 <+197>: call 0x8049515 <explode_bomb>

0x08048e6e <+202>: mov $0x66,%eax

0x08048e73 <+207>: jmp 0x8048eeb <phase_5+327>

0x08048e75 <+209>: mov $0x70,%eax

0x08048e7a <+214>: cmpl $0x161,0x2c(%esp)

0x08048e82 <+222>: je 0x8048eeb <phase_5+327>

0x08048e84 <+224>: call 0x8049515 <explode_bomb>

0x08048e89 <+229>: mov $0x70,%eax

0x08048e8e <+234>: jmp 0x8048eeb <phase_5+327>

0x08048e90 <+236>: mov $0x6f,%eax

0x08048e95 <+241>: cmpl $0x329,0x2c(%esp)

0x08048e9d <+249>: je 0x8048eeb <phase_5+327>

0x08048e9f <+251>: call 0x8049515 <explode_bomb>

0x08048ea4 <+256>: mov $0x6f,%eax

---Type <return> to continue, or q <return> to quit---

0x08048ea9 <+261>: jmp 0x8048eeb <phase_5+327>

0x08048eab <+263>: mov $0x64,%eax

0x08048eb0 <+268>: cmpl $0x273,0x2c(%esp)

0x08048eb8 <+276>: je 0x8048eeb <phase_5+327>

0x08048eba <+278>: call 0x8049515 <explode_bomb>

0x08048ebf <+283>: mov $0x64,%eax

0x08048ec4 <+288>: jmp 0x8048eeb <phase_5+327>

0x08048ec6 <+290>: mov $0x62,%eax

0x08048ecb <+295>: cmpl $0x2b8,0x2c(%esp)

0x08048ed3 <+303>: je 0x8048eeb <phase_5+327>

0x08048ed5 <+305>: call 0x8049515 <explode_bomb>

0x08048eda <+310>: mov $0x62,%eax

0x08048edf <+315>: jmp 0x8048eeb <phase_5+327>

0x08048ee1 <+317>: call 0x8049515 <explode_bomb>

0x08048ee6 <+322>: mov $0x67,%eax

=> 0x08048eeb <+327>: cmp 0x27(%esp),%al

0x08048eef <+331>: je 0x8048ef6 <phase_5+338>

0x08048ef1 <+333>: call 0x8049515 <explode_bomb>

0x08048ef6 <+338>: add $0x3c,%esp

0x08048ef9 <+341>: ret

End of assembler dump.

(gdb) x/d $esp+0x27

0xffffce97: 306

最佳答案

print $al(或 p $al)将起作用。 x 不起作用,因为它不显示值,它显示该地址 的内容(并且 $al 不是有效指针)。您还可以一次显示所有寄存器,请参阅 info gdb Registers .

info registers

Print the names and values of all registers except floating-point and vector registers (in the selected stack frame).

信息所有寄存器

Print the names and values of all registers, including floating-point and vector registers (in the selected stack frame).

信息寄存器 regname ...

Print the relativized value of each specified register regname. As discussed in detail below, register values are normally relative to the selected stack frame. The regname may be any register name valid on the machine you are using, with or without the initial ‘$’.

关于linux - 我如何找到这个 al 寄存器中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com