Advertisement

汇编程序实现了修改函数返回地址对程序执行流程的影响

阅读量:

程序需求:设计一个函数,当该函数执行完毕并返回后,原有程序的运行流程将被调整。
编程思路:函数调用过程依赖于堆栈机制,在函数开始运行前,系统会将该函数后续执行的指令地址存入堆栈中。当函数执行完成时,程序会从该地址继续执行后续指令。通过在函数内部对堆栈中存储的返回地址进行修改,即可实现对程序执行流程的调整。在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)

还没有任何评论哟~