c++修改函数返回地址
2013-12-06 11:27
344 查看
#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"); }
相关文章推荐
- 10 个免费的 C/C++ 集成开发环境
- window C++开发工具
- windowsC/C++开发工具集
- C++查漏补缺读书笔记一 友元(friend)
- ubuntu C++开发环境
- C++标准库 list使用方法
- ubuntu下的C++集成开发环境
- C语言中位运算的一点小小总结
- 二、C++动态联编-类指针(引入虚拟函数)
- C语言总结(二) 数组
- C++中map容器实现单词转换的程序
- 关于静态库的添加方法另解
- 模板和异常处理
- c++学习连载-堆排序完整程序
- C++ 中删除文件的方法
- C++控制台程序获取本机IP地址
- C语言结构体
- C语言总结(一)scanf(), printf()
- Hangman JudgeIn
- 不存在的默认构造函数