c++修改函数返回地址
#include <iostream>
#include <stdio.h>
using namespace std;

int retAddr = 0;

void func()
{
	// 修改函数返回值,使其回到main函数中去
	__asm{
		mov eax, dword ptr[retAddr]
		mov dword ptr[ebp], eax;
		sub ebp, 4 
		sub esp, 4
	}
	cout<<"执行func()"<<endl;
}

int funcAddr = int(func);
bool myFunction()
{
	// 将函数返回值记录在全局变量中
	// 改变函数返回值,使其跳转到func
	__asm {
		mov eax , dword ptr[ebp+4]
		mov dword ptr[retAddr], eax
		mov eax,  dword ptr[funcAddr]
		mov dword ptr[ebp+4], eax
	}
	cout<<"执行 myFunction()"<<endl;
	return false;
}

int main()
{
	myFunction();
	cout<<"返回到main()中。"<<endl;
	system("pause");
}


阅读更多
个人分类: c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

c++修改函数返回地址

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭