汇编程序实现了修改函数返回地址对程序执行流程的影响
发布时间
阅读量:
阅读量
程序需求:设计一个函数,当该函数执行完毕并返回后,原有程序的运行流程将被调整。
编程思路:函数调用过程依赖于堆栈机制,在函数开始运行前,系统会将该函数后续执行的指令地址存入堆栈中。当函数执行完成时,程序会从该地址继续执行后续指令。通过在函数内部对堆栈中存储的返回地址进行修改,即可实现对程序执行流程的调整。在C语言环境下,由于无法直接操作寄存器中的值,因此需要借助汇编语言来实现对返回地址的修改。具体方法是通过参数将期望跳转至的地址传递至汇编代码中,并在其中完成对返回地址的更改,从而引导程序跳转至目标位置继续执行。
开发环境
Windows 10操作系统搭配Visual Studio 2017开发环境
C语言代码实现如下:
#include <stdio.h>
#include <stdlib.h>
void function()
{
printf("hello,function!\n");
getchar();
exit(0);
}
void test()
{
__asm
{
mov eax,function
mov [ebp+4],eax
全部评论 (0)
还没有任何评论哟~
