C 二元炸弹实验室第六阶段建议
我一直在二元炸弹实验室的第六阶段工作,我遇到了一些麻烦。我想我可能读错了 据我所知:C 二元炸弹实验室第六阶段建议,c,assembly,cs50,C,Assembly,Cs50,我一直在二元炸弹实验室的第六阶段工作,我遇到了一些麻烦。我想我可能读错了 据我所知: 需要有6个数字 答案中的数字不能重复(例如不能有“2 2 5 3 4 6”) 我知道有6个节点,有循环(大量循环…) 我认为这些数字需要按降序排列,比如“654321”,根据哪个节点的数字最大 我想算出这个数字的方程式是7-x?我不能完全肯定这一点 我不知道我该怎么做才能通过最后的爆炸炸弹 我的节点如下所示: 节点1:0x5575830,0x19e=414 节点2:0x55758240,0x1da=474
- 需要有6个数字
- 答案中的数字不能重复(例如不能有“2 2 5 3 4 6”)
- 我知道有6个节点,有循环(大量循环…)
- 我认为这些数字需要按降序排列,比如“654321”,根据哪个节点的数字最大
- 我想算出这个数字的方程式是7-x?我不能完全肯定这一点
0x00001561 push r14
0x00001563 push r13
0x00001565 push r12
0x00001567 push rbp
0x00001568 push rbx
0x00001569 sub rsp, 0x60
0x0000156d mov rax, qword fs:[0x28]
0x00001576 mov qword [var_58h], rax
0x0000157b xor eax, eax
0x0000157d mov r13, rsp
0x00001580 mov rsi, r13 ; int64_t arg2
0x00001583 call read_six_numbers ; sym.read_six_numbers //read 6 numbers
0x00001588 mov r12, r13
0x0000158b mov r14d, 0
0x00001591 jmp 0x15b8 // jump if there is 6
0x00001593 call explode_bomb ; sym.explode_bomb //explode if input isn't 6 numbers
0x00001598 jmp 0x15c7 ; sym.phase_6+0x66
0x0000159a add ebx, 1
0x0000159d cmp ebx, 5
0x000015a0 jg 0x15b4 // jump if greater
0x000015a2 movsxd rax, ebx // I think this is where my loop started
0x000015a5 mov eax, dword [rsp + rax*4]
0x000015a8 cmp dword [rbp], eax
0x000015ab jne 0x159a
0x000015ad call explode_bomb ; sym.explode_bomb
0x000015b2 jmp 0x159a ; sym.phase_6+0x39
0x000015b4 add r13, 4
0x000015b8 mov rbp, r13
0x000015bb mov eax, dword [r13]
0x000015bf sub eax, 1
0x000015c2 cmp eax, 5
0x000015c5 ja 0x1593
0x000015c7 add r14d, 1
0x000015cb cmp r14d, 6
0x000015cf je 0x15d6
0x000015d1 mov ebx, r14d
0x000015d4 jmp 0x15a2
0x000015d6 lea rcx, [r12 + 0x18]
0x000015db mov edx, 7
0x000015e0 mov eax, edx
0x000015e2 sub eax, dword [r12]
0x000015e6 mov dword [r12], eax
0x000015ea add r12, 4
0x000015ee cmp rcx, r12
0x000015f1 jne 0x15e0
0x000015f3 mov esi, 0
0x000015f8 jmp 0x1614
0x000015fa mov rdx, qword [rdx + 8]
0x000015fe add eax, 1
0x00001601 cmp eax, ecx
0x00001603 jne 0x15fa
0x00001605 mov qword [rsp + rsi*8 + 0x20], rdx
0x0000160a add rsi, 1
0x0000160e cmp rsi, 6
0x00001612 je 0x162a
0x00001614 mov ecx, dword [rsp + rsi*4]
0x00001617 mov eax, 1
0x0000161c lea rdx, node1 ; 0x204230 //Node 1 which I get to after looping so many times
0x00001623 cmp ecx, 1
0x00001626 jg 0x15fa // send me to loop again
0x00001628 jmp 0x1605
0x0000162a mov rbx, qword [var_20h] //This whole part confuses me
0x0000162f mov rax, qword [var_28h]
0x00001634 mov qword [rbx + 8], rax
0x00001638 mov rdx, qword [var_30h]
0x0000163d mov qword [rax + 8], rdx
0x00001641 mov rax, qword [var_38h]
0x00001646 mov qword [rdx + 8], rax
0x0000164a mov rdx, qword [var_40h]
0x0000164f mov qword [rax + 8], rdx
0x00001653 mov rax, qword [var_48h]
0x00001658 mov qword [rdx + 8], rax
0x0000165c mov qword [rax + 8], 0
0x00001664 mov ebp, 5
0x00001669 jmp 0x1674
0x0000166b mov rbx, qword [rbx + 8]
0x0000166f sub ebp, 1
0x00001672 je 0x1685
0x00001674 mov rax, qword [rbx + 8]
0x00001678 mov eax, dword [tax]
0x0000167a cmp dword [rbx], eax
0x0000167c jge 0x166b
0x0000167e call explode_bomb ; sym.explode_bomb // I eventually get here everytime
0x00001683 jmp 0x166b ; sym.phase_6+0x10a
0x00001685 mov rax, qword [var_58h]
0x0000168a xor rax, qword fs:[0x28]
0x00001693 jne 0x16a2
0x00001695 add rsp, 0x60
0x00001699 pop rbx
0x0000169a pop rbp
0x0000169b pop r12
0x0000169d pop r13
0x0000169f pop r14
0x000016a1 ret
0x000016a2 call __stack_chk_fail ; sym.imp.__stack_chk_fail ; void __stack_chk_fail(void)
您显然忘记应用
7-x
。