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++中不应该返回局部变量的地址

在Effective C++中明确指出:不应该返回
  • tujinqiuqq85948239
  • tujinqiuqq85948239
  • 2014年05月27日 22:36
  • 787

用C/C++实现代码的动态修改(SMC)

用C/C++实现代码的动态修改(SMC)   作者:星轨(oRbIt)   E_Mail :inte2000@163.com    摘要:所谓SMC(Self Modifying...
  • flyingleo1981
  • flyingleo1981
  • 2015年02月10日 10:49
  • 1608

c++ 函数入口地址问题

最近在看《C++ 编程思想》,其中
  • wo17fang
  • wo17fang
  • 2014年05月13日 13:34
  • 1187

C++实现IP地址类

在互联网中使用的IP地址占4字节,可以用四段法表示,每段值的范围为0-255,中间用“.”隔开,例如202.194.116.97。其实,也可以看看一个有4字节的无符号整型值3401741409。   ...
  • chongshangyunxiao321
  • chongshangyunxiao321
  • 2016年04月04日 11:07
  • 1728

c++函数指针和返回值为指针的函数

1  指针的指针,数组指针 ,指针数组 2  函数指针 指针函数  3  const T   Tconst     T  f ()const      const  T f()...
  • qq_21034239
  • qq_21034239
  • 2017年04月13日 21:34
  • 499

C++学习记录之函数返回值为指针的问题

一般在函数中定义一个对象有两种方法: 1、在栈上建立局部变量。注意,在栈上时!栈用于函数是为了返回时找得到调用点(在调用时压入栈的) ,那么,返回时要POP才能得到。函数体中建立的任何东西都释放掉了,...
  • xiaowenliuwen
  • xiaowenliuwen
  • 2015年11月18日 19:59
  • 1573

C++按值返回、按址返回、按别名返回开销的区别

好久木有写博客了,前一段时间忙着毕业论文和答辩。最近对游戏开发方面比较有兴趣,就学习了一下C++,因为很多游戏引擎都支持C++。花了几天的时间基本系统的学习了一下C++的语法规范,看得是范类的C++视...
  • yangxuan0261
  • yangxuan0261
  • 2014年02月26日 01:18
  • 982

理解C++中函数的返回

连续几年的C++程序设计课教学中,学生中总有人要求为他们单独解释函数的返回(return)究竟是什么意思。各种书中都会详讲返回值的问题,而学生们掌握的难点却是在返回至何处执行。本文试图通过对一般函数及...
  • sxhelijian
  • sxhelijian
  • 2013年11月21日 11:39
  • 4748

C++不重起Windows直接更改IP地址

出处:http://www.cppblog.com/lizao2/archive/2012/10/11/193147.aspx 源代码运行效果图如下: 设置IP地址只需要更改注册表...
  • wuhenyouyuyouyu
  • wuhenyouyuyouyu
  • 2017年11月28日 10:08
  • 117

[C/C++]如何解读返回函数指针的函数声明

int (*(*pf())())() { return nullptr; }   从来没有见过这样的函数声明。那么它究竟是一个怎样的函数呢?我努力回忆起《C专家编程》一书的内...
  • u012861978
  • u012861978
  • 2015年09月12日 09:43
  • 1028
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++修改函数返回地址
举报原因:
原因补充:

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