title: Binary Bomb Phase 5 - lookup table translation -> string compare
body: <p>I have been working on a Binary Bomb for school, and I am absolutely lost in Phase 5. The object of the assignment is to dissemble the code and find a string, which I have found to be "flyers" and reverse engineer it to have the same numerical value as "flyers" does. However, I have spent the last 3-4 hours trying to find out how to do this? You don't have to give answers, but PLEASE help me understand what I need to do. Here is the disassembled code using gdb:</p>
  
  <pre><code>Dump of assembler code for function phase_5:
  0x08048d88 &lt;+0&gt;:    push   %ebx
  0x08048d89 &lt;+1&gt;:    sub    $0x28,%esp
  0x08048d8c &lt;+4&gt;:    mov    0x30(%esp),%ebx
  0x08048d90 &lt;+8&gt;:    mov    %gs:0x14,%eax
  0x08048d96 &lt;+14&gt;:    mov    %eax,0x1c(%esp)
  0x08048d9a &lt;+18&gt;:    xor    %eax,%eax
  0x08048d9c &lt;+20&gt;:    mov    %ebx,(%esp)
  0x08048d9f &lt;+23&gt;:    call   0x804902b &lt;string_length&gt;
  0x08048da4 &lt;+28&gt;:    cmp    $0x6,%eax
  0x08048da7 &lt;+31&gt;:    je     0x8048dae &lt;phase_5+38&gt;
  0x08048da9 &lt;+33&gt;:    call   0x804934c &lt;explode_bomb&gt;
  0x08048dae &lt;+38&gt;:    mov    $0x0,%eax
  0x08048db3 &lt;+43&gt;:    movsbl (%ebx,%eax,1),%edx
  0x08048db7 &lt;+47&gt;:    and    $0xf,%edx
  0x08048dba &lt;+50&gt;:    movzbl 0x804a4b8(%edx),%edx
  0x08048dc1 &lt;+57&gt;:    mov    %dl,0x15(%esp,%eax,1)
  0x08048dc5 &lt;+61&gt;:    add    $0x1,%eax
  0x08048dc8 &lt;+64&gt;:    cmp    $0x6,%eax
  0x08048dcb &lt;+67&gt;:    jne    0x8048db3 &lt;phase_5+43&gt;
  0x08048dcd &lt;+69&gt;:    movb   $0x0,0x1b(%esp)
  0x08048dd2 &lt;+74&gt;:    movl   $0x804a48e,0x4(%esp)
  0x08048dda &lt;+82&gt;:    lea    0x15(%esp),%eax
  0x08048dde &lt;+86&gt;:    mov    %eax,(%esp)
  0x08048de1 &lt;+89&gt;:    call   0x8049044 &lt;strings_not_equal&gt;
  0x08048de6 &lt;+94&gt;:    test   %eax,%eax
  0x08048de8 &lt;+96&gt;:    je     0x8048def &lt;phase_5+103&gt;
  0x08048dea &lt;+98&gt;:    call   0x804934c &lt;explode_bomb&gt;
  0x08048def &lt;+103&gt;:    mov    0x1c(%esp),%eax
  0x08048df3 &lt;+107&gt;:    xor    %gs:0x14,%eax
  0x08048dfa &lt;+114&gt;:    je     0x8048e05 &lt;phase_5+125&gt;
  0x08048dfc &lt;+116&gt;:    lea    0x0(%esi,%eiz,1),%esi
  0x08048e00 &lt;+120&gt;:    call   0x8048810 &lt;__stack_chk_fail@plt&gt;
  0x08048e05 &lt;+125&gt;:    add    $0x28,%esp
  0x08048e08 &lt;+128&gt;:    pop    %ebx
  0x08048e09 &lt;+129&gt;:    ret    
  End of assembler dump.
  </code></pre>