如何通过指针实现执行代码的软重启(假设执行代码的起始地址为0x0000)

fly__chen 2016-11-22 08:46:13
笔试题遇到这题不理解什么意思?百度也没查到。

和 实现程序跳转到绝对地址0x0000处执行 一个意思吗?

http://blog.csdn.net/jipingyuan/article/details/39297409

请大神帮吗?详细点谢谢!
...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
GKatHere 2016-11-23
  • 打赏
  • 举报
回复
没那么复杂,用typedef声明下,很简单明了

typedef int(*VF)();
VF vf = (VF)0x10000;
vf();
int _tmain(int argc, _TCHAR* argv[]) { if (LONG(argv) ==0) { printf("0\n"); return 0; } else if (LONG(argv) ==1) { printf("1\n"); return 0; } else printf(__FUNCTION__ "\n"); ::getchar(); ((int(*)(int, _TCHAR*[]))_tmain)(0, 0); typedef int(*VF)(int, _TCHAR*[]); VF vf = (VF)_tmain; vf(0, (_TCHAR**)1);; printf("The End\n"); ::getchar(); return 1; }



赵4老师 2016-11-23
  • 打赏
  • 举报
回复
参考开源虚拟机源代码相关片断。
zenny_chen 2016-11-23
  • 打赏
  • 举报
回复
我估计它的意思是通过函数指针在某一个时刻将某一段代码加载到某个内存段中执行~其实就是拷贝代码动态执行的意思罢……

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧