Лаборатория Бинарных Бомб, Фаза 4 - PullRequest
1 голос
/ 29 марта 2020

Вот мой ассемблерный код:

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, но не повезло.

Есть советы? Спасибо!

...