我获得了炸弹实验室作为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
谢谢,非常感谢