汇编中子程序调用问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 16:42:26
我在调试这程序时碰到这样的问题。程序段如下:
......
004B55D0 PUSH EBP
004B55D1 MOV EBP,ESP
004B55D3 PUSH 0
004B55D5 PUSH 0
004B55D7 PUSH EBX
004B55D8 PUSH ESI
004B55D9 MOV ESI,EDX
004B55DB MOV EBX,EAX
004B55DD XOR EAX,EAX
004B55DF PUSH EBP
004B55E0 PUSH _UnPacke.004B5654
004B55E5 PUSH DWORD PTR FS:[EAX]
004B55E8 MOV DWORD PTR FS:[EAX],ESP
004B55EB MOV EAX,EBX
004B55ED CALL _UnPacke.004B5884
004B55F2 TEST AL,AL
004B55F4 JNZ SHORT _UnPacke.004B5601
004B55F6 MOV EDX,ESI
004B55F8 MOV EAX,EBX
004B55FA CALL _UnPacke.004609F8
004B55FF JMP SHORT _UnPacke.004B5639
004B5601 LEA EDX,DWORD PTR SS:[EBP-4]
004B5604 MOV EAX,EBX
004B5606 CALL _UnPacke.004B55BC
004B560B MOV EDX,DWORD PTR SS:[EBP-4]
004B560E MOV ECX,ESI
004B5610 MOV EAX,EBX
004B5612 CALL _UnPacke.004B6694
004B5617 CMP BYTE PTR DS:[EBX+22C],0
004B561E JE SHORT _UnPacke.004B5639

004B5641 PUSH _UnPacke.004B565B
004B5646 LEA EAX,DWORD PTR SS:[EBP-8]
004B5649 MOV EDX,2
004B564E CALL _UnPacke.004042E8
004B5653 RET
004B5654 JMP _UnPacke.00403C44
004B5659 JMP SHORT _UnPacke.004B5646
004B565B POP ESI

在004B5659处, 程序通过JMP 指令跳到004B5646, 执行过程中发生函数调用, 调用结束后, 返回到JMP的下一条指令004B565B 处去执行, 这有什么不好理解的呢?