Linux C 库打桩技术

1.前言

库打桩技术,可以截获对共享库函数的调用。应用上可以如可以控制函数调用的输入输出值,以自己的逻辑替换函数调用等;
基本思想:创建一个与目标函数相同原型的包装函数,通过编译时函数实现的搜索机制、或链接时函数符号解析搜索的机制、或运行时动态链接库的加载机制,将自定义的包装函数替换目标函数。

2. 测试环境

系统环境:Ubuntu14.04
Gcc版本:gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4)

3.编译时打桩

3.1.相关文件

3.1.1.main.c

#include <stdio.h> 
#include <malloc.h>
int main()
{
   
	size_t len = 10;
	char * msg =  calloc(1,len);

	snprintf( msg,len,"%s","aloha");
	printf("msg:%s\n",msg);

	free(msg);
	msg = 0;

	return 0;
}

3.1.2.newcalloc.h

#define  calloc(nmemb,size) newcalloc(nmemb,size)
#define free(ptr)   newfree(ptr)

void *newcalloc(size_t nmemb, size_t size);
void newfree(void *ptr);

3.1.3.newcalloc.c

#include <stdio.h>
#include <malloc.h>

 void *newcalloc(size_t nmemb, size_t size)
 {
   

 	static int _newcalloc_calltime = 0;
 	++_newcalloc_calltime;
 	printf("calloc ptr(%d,%d) ,call times=%d\n",nmemb,size,_newcalloc_calltime);

 	void * ptr = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值