资源简介
C语言UT单元测试中需要实现动态,本代码实现了该功能,原理和网络上的描述一样,通过修改机器指令实现。
平台是Linux
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include “stub.h“
static long pagesize = -1;
static inline void *pageof(const void* p)
{
return (void *)((unsigned long)p & ~(pagesize - 1));
}
void stub_set(struct func_stub *pstub void *fn void *fn_stub)
{
pstub->fn = fn;
memcpy(pstub->code_buf fn CODESIZE);
if (-1 == mprotect(pageof(fn) pagesize * 2 PROT_READ | PROT_WRITE | PROT_EXEC))
{
perror(“mprotect to w+r+x faild“);
exit(errno);
}
*(unsigned char *)fn = (unsigned char)0xE9;
*(unsigned int *)((unsigned char *)fn + 1) = (unsigned char *)fn_stub - (unsigned char *)fn - CODESIZE;
if (-1 == mprotect(pageof(fn) pagesize * 2 PROT_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1643 2014-07-27 17:29 stub\stub.c
文件 319 2014-07-27 17:22 stub\stub.h
文件 670 2014-07-27 17:30 stub\test_stub.c
目录 0 2014-07-28 00:46 stub\
- 上一篇:基于C++语言开发的股票交易系统代码
- 下一篇:MFC制作的屏幕右下角弹出窗口
相关资源
- Thinking in C++中文版
- C++语言程序设计_第四版_郑莉_高清p
- 东南大学C++课件-何洁月80讲(总).
- VC中文版MSDN手册.chm
- C语言程序设计(第四版)谭浩强著
- DevC++
- C/C++实验系统
- c语言教程1946
- c语言资料大全
- VC6·0完整绿色版
- C语言经典算法大全 总
- 一个月挑战c++
- 很好用的C语言编译器,结合TC2.0,3
- vsC++编程新手指导
- C++语言编程器
- The_C_Programming_Language第二版中文版
- VS2008 windows应用程序C++
- C语言基础习题集(C考试常见题型)
- VC6.0编程软件
- C++深入版
- C语言编程大赛试题
- C++PPT
- 二级C语言复习资料打包(2011-07)
- 关于MFC的 基本用法及实例的源代码
- c语言嵌入式
- 数据结构习题集答案(C语言版严蔚敏
- c高级编程技术
- 俄罗斯方块,C语言实现
- C语言程序设计案例教程
- c语言教程讲义(谭浩强)1870
评论
共有 条评论