900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 深入理解操作系统实验——bomb lab(phase_6)

深入理解操作系统实验——bomb lab(phase_6)

时间:2022-03-04 22:02:24

相关推荐

深入理解操作系统实验——bomb lab(phase_6)

6、对phase_6解决

得到phase_6的汇编代码,进行反汇编

push %esipush %ebxsub $0x44,%esplea 0x10(%esp),%eaxmov %eax,0x4(%esp)mov 0x50(%esp),%eaxmov %eax,(%esp)call 80492ab <read_six_numbers>mov $0x0,%esimov 0x10(%esp,%esi,4),%eaxsub $0x1,%eaxcmp $0x5,%eaxjbe 8048e65 <phase_6+0x2f>call 8049176 <explode_bomb>add $0x1,%esicmp $0x6,%esije8048ea0 <phase_6+0x6a>mov %esi,%ebxmov 0x10(%esp,%ebx,4),%eaxcmp %eax,0xc(%esp,%esi,4)jne 8048e7e <phase_6+0x48>call 8049176 <explode_bomb>add $0x1,%ebxcmp $0x5,%ebxjle 8048e6f <phase_6+0x39>jmp 8048e54 <phase_6+0x1e>mov 0x8(%edx),%edxadd $0x1,%eaxcmp %ecx,%eaxjne 8048e88 <phase_6+0x52>mov %edx,0x28(%esp,%esi,4)add $0x1,%ebxcmp $0x6,%ebxjne 8048ea5 <phase_6+0x6f>jmp 8048ebc <phase_6+0x86>mov $0x0,%ebxmov %ebx,%esimov 0x10(%esp,%ebx,4),%ecxmov $0x1,%eaxmov $0x804c13c,%edxcmp $0x1,%ecxjg8048e88 <phase_6+0x52>jmp 8048e92 <phase_6+0x5c>mov 0x28(%esp),%ebxmov 0x2c(%esp),%eaxmov %eax,0x8(%ebx)mov 0x30(%esp),%edxmov %edx,0x8(%eax)mov 0x34(%esp),%eaxmov %eax,0x8(%edx)mov 0x38(%esp),%edxmov %edx,0x8(%eax)mov 0x3c(%esp),%eaxmov %eax,0x8(%edx)movl $0x0,0x8(%eax)mov $0x5,%esimov 0x8(%ebx),%eaxmov (%eax),%edxcmp %edx,(%ebx)jle 8048efd <phase_6+0xc7>call 8049176 <explode_bomb>mov 0x8(%ebx),%ebxsub $0x1,%esijne 8048eef <phase_6+0xb9>add $0x44,%esppop %ebxpop %esiret

通过代码分析可以得到这个密码需要输入六个数字,这六个数字不能重复,不能超过6也不能小于1,可以确定就只有1,2,3,4,5,6这6个数字进行排序。可以通过汇编得到每个数字有他自己的编码,其中1对应2fe,2对应25a,3对应23a,4对应1a0,5对应36e,6对应321,通过尝试可以得到按小到大排列,最终的结果为4 3 2 1 6 5

此时,全部的六个炸弹已经解决,代码已经可以通过,如图所示:

但实际上还有一个隐藏炸弹需要解决,这个炸弹并没有直接进入的方法,而是有一条隐秘的路径,下面是我对隐藏炸弹的解决

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。