c++修改函数返回地址

原创 2013年12月06日 11:27:41
#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++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。 错误代码: int main(){ int *p; p=funcGetPointer...

关于缓冲区到函数返回地址分析

用gdb调试可执行程序h(从附件下载h.tar.gz),计算缓冲区起始地址与函数foo返回地址的距离的调试过程

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

函数返回局部变量地址

一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地...

C++函数返回引用和值问题

今天因为改到一个代码,所以遇到一个问题。函数里局部变量返回的问题。以下是代码,就是运用类模板,重载了+操作:一。最原始的代码如下:#include #include template class T_...

C++中函数返回临时对象和本地对象的区别

C++中函数返回临时对象和本地对象的区别                        By qianghaohao(CodeNutter)      ...

C++成员函数返回对象的引用

在C++类的成员函数中,包含了一个隐含的this指针。一般情况下,并不会显示地使用this指针,即通过”this->XXX“来使用类的成员。但是在成员函数返回对该调用函数的对象的引用时,会显示的使用t...

从C++函数返回多个值

作者:Eli Bendersky http://eli.thegreenplace.net/2016/returning-multiple-values-from-functions-in-c/ ...

改善C++ 程序的150个建议学习之建议0:不要让main函数返回void

建议0:不要让main函数返回void 同C程序一样,每个C++ 程序都包含一个或多个函数,而且必须有一个函数命名为 main,并且每个函数都由具有一定功能的语句序列组成。操作系统将main作为程序入...

关于C++中的函数返回局部string的问题

函数返回局部变量string的时候能不能被引用? 前两天被同事突然问道这个问题,见到string一时糊涂了,最初学习C++的时候,就说不能引用局部变量,现在怎么糊涂了呢?呵呵   今天想了下,原来是被...

c++函数返回引用

函数返回值和返回引用是不同的 函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本,既然是引用,那引用谁呢?这个问题必须清楚,否则将无法理解返回引用到底是个什么概念。以下...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)