Вот мой ассемблерный код:
Dump of assembler code for function phase_4:
=> 0x08048cb1 <+0>: push %esi
0x08048cb2 <+1>: push %ebx
0x08048cb3 <+2>: sub $0x14,%esp
0x08048cb6 <+5>: mov 0x20(%esp),%ebx
0x08048cba <+9>: mov %ebx,(%esp)
0x08048cbd <+12>: call 0x804909b <string_length>
0x08048cc2 <+17>: mov %eax,%esi
0x08048cc4 <+19>: lea 0x1(%eax),%eax
0x08048cc7 <+22>: mov %eax,(%esp)
0x08048cca <+25>: call 0x8048800 <malloc@plt>
0x08048ccf <+30>: lea (%eax,%esi,1),%ecx
0x08048cd2 <+33>: movb $0x0,(%ecx)
0x08048cd5 <+36>: movzbl (%ebx),%edx
0x08048cd8 <+39>: test %dl,%dl
0x08048cda <+41>: je 0x8048ceb <phase_4+58>
0x08048cdc <+43>: sub $0x1,%ecx
0x08048cdf <+46>: mov %dl,(%ecx)
0x08048ce1 <+48>: add $0x1,%ebx
0x08048ce4 <+51>: movzbl (%ebx),%edx
0x08048ce7 <+54>: test %dl,%dl
0x08048ce9 <+56>: jne 0x8048cdc <phase_4+43>
0x08048ceb <+58>: mov %eax,0x4(%esp)
0x08048cef <+62>: movl $0x804a3a8,(%esp)
0x08048cf6 <+69>: call 0x80490ba <strings_not_equal>
0x08048cfb <+74>: test %eax,%eax
0x08048cfd <+76>: je 0x8048d04 <phase_4+83>
0x08048cff <+78>: call 0x8049353 <explode_bomb>
0x08048d04 <+83>: add $0x14,%esp
0x08048d07 <+86>: pop %ebx
0x08048d08 <+87>: pop %esi
0x08048d09 <+88>: ret
Я понимаю, что входной строкой манипулируют, и я вижу, что есть al oop, который идет до конца входной строки. Но я не могу сказать, где хранится эта измененная строка? Может ли это быть из струн внутри моей бомбы? У меня была строка «Что лучше, чем смеющийся бурундук? Тихий бурундук», и я подумал, что это может быть моей манипуляцией. Я пытался проверить ebx & edx, но не повезло.
Есть советы? Спасибо!