C 在gdb中调试程序集(来自二进制文件)

C 在gdb中调试程序集(来自二进制文件),c,debugging,assembly,gdb,binaryfiles,C,Debugging,Assembly,Gdb,Binaryfiles,我正试图找到其中一枚二元炸弹的答案。这是给学校的,所以请帮我指出正确的方向,我相信我即将解决这个难题 这是我一直坚持的一块组件: 0x080485e9 <+127>: call 0x8048400 <strtol@plt> 0x080485ee <+132>: cmp %eax,0x80498d4(,%ebx,4) 0x080485f5 <+139>: je 0x80485fc <main+146> 0x0

我正试图找到其中一枚二元炸弹的答案。这是给学校的,所以请帮我指出正确的方向,我相信我即将解决这个难题

这是我一直坚持的一块组件:

0x080485e9 <+127>:   call   0x8048400 <strtol@plt>
0x080485ee <+132>:   cmp    %eax,0x80498d4(,%ebx,4)
0x080485f5 <+139>:   je     0x80485fc <main+146>
0x080485f7 <+141>:   call   0x8048540 <bomb>
0x080485fc <+146>:   add    $0x1,%ebx
在gdb中,导致
$1=134519000

因此,我将上述内容插入我的输入,以便获得:

(gdb) print $eax
$2 = 134519000
现在,根据gdp,两个cmp参数似乎具有相同的值,但是
je
如果equal标志仍然没有计算为true,并且仍在调用
函数


任何指点和帮助都将不胜感激,谢谢

你不会碰巧在程序中的那一点上有
%ebx==1
?您可能希望实际
打印*(0x80498d4+$ebx*4)
,从而比较内存中的值,而不是地址…哈!这解决了它(更新的打印语句)。。。我对使用gdb还不熟悉,我不想去引用地址中的值,谢谢!
(gdb) print $eax
$2 = 134519000