Бинарная бомба, что делает phase_4? - PullRequest
0 голосов
/ 03 октября 2019

Я сейчас работаю над этим проектом, и мне нужна помощь, чтобы понять, что происходит с этой фазой в этой бинарной бомбе, которую нужно обезвредить.

Я понимаю, что требуемый вход имеетвведите% d% d, и я также вижу, что это рекурсивный вызов в методе func_4, однако я не совсем уверен, как числа меняются / перемещаются.

000000000040105e <func4>:
  40105e:   85 ff                   test   %edi,%edi
  401060:   7e 2b                   jle    40108d <func4+0x2f>
  401062:   89 f0                   mov    %esi,%eax
  401064:   83 ff 01                cmp    $0x1,%edi
  401067:   74 2e                   je     401097 <func4+0x39>
  401069:   41 54                   push   %r12
  40106b:   55                      push   %rbp
  40106c:   53                      push   %rbx
  40106d:   89 f5                   mov    %esi,%ebp
  40106f:   89 fb                   mov    %edi,%ebx
  401071:   8d 7f ff                lea    -0x1(%rdi),%edi
  401074:   e8 e5 ff ff ff          callq  40105e <func4>
  401079:   44 8d 64 05 00          lea    0x0(%rbp,%rax,1),%r12d
  40107e:   8d 7b fe                lea    -0x2(%rbx),%edi
  401081:   89 ee                   mov    %ebp,%esi
  401083:   e8 d6 ff ff ff          callq  40105e <func4>
  401088:   44 01 e0                add    %r12d,%eax
  40108b:   eb 06                   jmp    401093 <func4+0x35>
  40108d:   b8 00 00 00 00          mov    $0x0,%eax
  401092:   c3                      retq   
  401093:   5b                      pop    %rbx
  401094:   5d                      pop    %rbp
  401095:   41 5c                   pop    %r12
  401097:   f3 c3                   repz retq 

0000000000401099 <phase_4>:
  401099:   48 83 ec 18             sub    $0x18,%rsp
  40109d:   64 48 8b 04 25 28 00    mov    %fs:0x28,%rax
  4010a4:   00 00 
  4010a6:   48 89 44 24 08          mov    %rax,0x8(%rsp)
  4010ab:   31 c0                   xor    %eax,%eax
  4010ad:   48 89 e1                mov    %rsp,%rcx
  4010b0:   48 8d 54 24 04          lea    0x4(%rsp),%rdx
  4010b5:   be 1e 2a 40 00          mov    $0x402a1e,%esi
  4010ba:   e8 81 fb ff ff          callq  400c40 <__isoc99_sscanf@plt>
  4010bf:   83 f8 02                cmp    $0x2,%eax
  4010c2:   75 0b                   jne    4010cf <phase_4+0x36>
  4010c4:   8b 04 24                mov    (%rsp),%eax
  4010c7:   83 e8 02                sub    $0x2,%eax
  4010ca:   83 f8 02                cmp    $0x2,%eax
  4010cd:   76 05                   jbe    4010d4 <hase_4+0x3b>
  4010cf:   e8 73 05 00 00          callq  401647 <explode_bomb>
  4010d4:   8b 34 24                mov    (%rsp),%esi
  4010d7:   bf 06 00 00 00          mov    $0x6,%edi
  4010dc:   e8 7d ff ff ff          callq  40105e <func4>
  4010e1:   3b 44 24 04             cmp    0x4(%rsp),%eax
  4010e5:   74 05                   je     4010ec <phase_4+0x53>
  4010e7:   e8 5b 05 00 00          callq  401647 <explode_bomb>
  4010ec:   48 8b 44 24 08          mov    0x8(%rsp),%rax
  4010f1:   64 48 33 04 25 28 00    xor    %fs:0x28,%rax
  4010f8:   00 00 
  4010fa:   74 05                   je     401101 <phase_4+0x68>
  4010fc:   e8 8f fa ff ff          callq  400b90 <__stack_chk_fail@plt>
  401101:   48 83 c4 18             add    $0x18,%rsp
  401105:   c3                      retq   

Я пробовал базовые комбинации чисел, такие как 2 и 3 и 4 и 5, но не повезло, и я действительно не уверен, какие цифры я должен получить. Буду очень признателен за любую помощь или руководство.

...