好友
阅读权限10
听众
最后登录1970-1-1
|
mool
发表于 2019-10-11 15:26
最近老师布置一个实验,给了一个可执行文件,让反汇编调试找到六个关卡的密钥,进行到第六关时卡住了。
这是第六关汇编代码
000000000000157c <fun6>:
157c: 48 89 f8 mov %rdi,%rax
157f: 4c 8b 47 08 mov 0x8(%rdi),%r8
1583: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi)
158a: 00
158b: 4d 85 c0 test %r8,%r8
158e: 75 2b jne 15bb <fun6+0x3f>
1590: f3 c3 repz retq
1592: 48 89 d1 mov %rdx,%rcx
1595: 48 8b 51 08 mov 0x8(%rcx),%rdx
1599: 48 85 d2 test %rdx,%rdx
159c: 74 04 je 15a2 <fun6+0x26>
159e: 39 32 cmp %esi,(%rdx)
15a0: 7f f0 jg 1592 <fun6+0x16>
15a2: 48 39 d1 cmp %rdx,%rcx
15a5: 74 2b je 15d2 <fun6+0x56>
15a7: 4c 89 41 08 mov %r8,0x8(%rcx)
15ab: 49 8b 48 08 mov 0x8(%r8),%rcx
15af: 49 89 50 08 mov %rdx,0x8(%r8)
15b3: 49 89 c8 mov %rcx,%r8
15b6: 48 85 c9 test %rcx,%rcx
15b9: 74 1c je 15d7 <fun6+0x5b>
15bb: 48 85 c0 test %rax,%rax
15be: 74 0a je 15ca <fun6+0x4e>
15c0: 41 8b 30 mov (%r8),%esi
15c3: 48 89 c1 mov %rax,%rcx
15c6: 39 30 cmp %esi,(%rax)
15c8: 7f cb jg 1595 <fun6+0x19>
15ca: 48 89 c2 mov %rax,%rdx
15cd: 4c 89 c0 mov %r8,%rax
15d0: eb d9 jmp 15ab <fun6+0x2f>
15d2: 4c 89 c0 mov %r8,%rax
15d5: eb d4 jmp 15ab <fun6+0x2f>
15d7: f3 c3 repz retq
00000000000015d9 <phase_6>:
15d9: 48 83 ec 08 sub $0x8,%rsp
15dd: ba 0a 00 00 00 mov $0xa,%edx
15e2: be 00 00 00 00 mov $0x0,%esi
15e7: e8 d4 f9 ff ff callq fc0 <strtol@plt>
15ec: 89 05 2e 20 20 00 mov %eax,0x20202e(%rip) # 203620 <node0>
15f2: 48 8d 3d 27 20 20 00 lea 0x202027(%rip),%rdi # 203620 <node0>
15f9: e8 7e ff ff ff callq 157c <fun6>
15fe: 48 8b 40 08 mov 0x8(%rax),%rax
1602: 48 8b 40 08 mov 0x8(%rax),%rax
1606: 48 8b 40 08 mov 0x8(%rax),%rax
160a: 48 8b 40 08 mov 0x8(%rax),%rax
160e: 48 8b 40 08 mov 0x8(%rax),%rax
1612: 48 8b 40 08 mov 0x8(%rax),%rax
1616: 48 8b 40 08 mov 0x8(%rax),%rax
161a: 8b 0d 00 20 20 00 mov 0x202000(%rip),%ecx # 203620 <node0>
1620: 39 08 cmp %ecx,(%rax)
1622: 74 05 je 1629 <phase_6+0x50>
1624: e8 12 06 00 00 callq 1c3b <explode_bomb>
1629: 48 83 c4 08 add $0x8,%rsp
162d: c3 retq
我想跳过fun6直接找在phase_6里找到密钥,但是失败,我我每次比较1620 ecx和(rax)时,rax指向的都是一个<node0>或者<node1>的变量,是一个字符串,
但是我输入的值phase_6会调用strtol转换为长整型数据,就永远不可能相等,自己分析fun6又分析不出来。
图片是运行时的寄存器值,rax是程序给定的,rcx是输入的值
|
-
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|