炸弹实验室第4阶段了解

时间:2015-03-25 18:39:05

标签: computer-science

我获得了炸弹实验室作为CS任务,并已进入第4阶段。

我已经理解了阶段4功能是如何工作的以及它如何通过传递用户放置扫描的输入来调用func 4函数。

我需要一些帮助来理解fun4的作用。 有人可以解释一下func 4试图做什么吗?


转储函数func4的汇编程序代码:

=> 0x08048af0< + 0&gt ;: push%ebp

0x08048af1< + 1>:mov%esp,%ebp

0x08048af3< + 3>:sub $ 0x18,%esp

0x08048af6< + 6>:mov%ebx,-0x8(%ebp)

0x08048af9< + 9>:mov%esi,-0x4(%ebp)

0x08048afc< + 12>:mov 0x8(%ebp),%edx

0x08048aff< + 15>:mov 0xc(%ebp),%eax

0x08048b02< + 18>:mov 0x10(%ebp),%ebx

0x08048b05< + 21>:mov%ebx,%ecx

0x08048b07< + 23>:sub%eax,%ecx

0x08048b09< + 25>:mov%ecx,%esi

0x08048b0b< + 27>:shr $ 0x1f,%esi

0x08048b0e< + 30>:lea(%esi,%ecx,1),%ecx

0x08048b11< + 33>:sar%ecx

0x08048b13< + 35>:添加%eax,%ecx

0x08048b15< + 37>:cmp%edx,%ecx

0x08048b17< + 39>:jle 0x8048b30

0x08048b19< + 41>:sub $ 0x1,%ecx

0x08048b1c< + 44>:mov%ecx,0x8(%esp)

0x08048b20< + 48>:mov%eax,0x4(%esp)

0x08048b24< + 52>:mov%edx,(%esp)

0x08048b27< + 55>:调用0x8048af0

0x08048b2c< + 60>:添加%eax,%eax

0x08048b2e< + 62>:jmp 0x8048b50

0x08048b30< + 64>:mov $ 0x0,%eax

0x08048b35< + 69>:cmp%edx,%ecx

0x08048b37< + 71>:jge 0x8048b50

0x08048b39< + 73>:mov%ebx,0x8(%esp)

0x08048b3d< + 77>:添加$ 0x1,%ecx

0x08048b40< + 80>:mov%ecx,0x4(%esp)

0x08048b44< + 84>:mov%edx,(%esp)

0x08048b47< + 87>:调用0x8048af0

0x08048b4c< + 92>:lea 0x1(%eax,%eax,1),%eax

0x08048b50< + 96>:mov -0x8(%ebp),%ebx

0x08048b53< + 99>:mov -0x4(%ebp),%esi

0x08048b56< + 102>:mov%ebp,%esp

0x08048b58< + 104>:pop%ebp

0x08048b59< + 105>:ret


谢谢,非常感谢

0 个答案:

没有答案