当前位置: 首页 > news >正文

网站建设用户需求表哪家网络营销好

网站建设用户需求表,哪家网络营销好,私域电商软件有哪些,网站如何自己做seo目录 hook malloc与free出现的问题 builtin_return_address(N) C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 hook malloc与free出现的问题 #define _GNU_SOURCE #include <stdio.h> #include <dlfcn.h> #include <stdlib.h> /****…

目录

hook malloc与free出现的问题

builtin_return_address(N)


C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂

hook malloc与free出现的问题

#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
/*****************************hook******************************/
typedef void *(*malloc_t)(size_t);
malloc_t malloc_f;
typedef void (*free_t)(void *);
free_t free_f;
static int init_hook() {malloc_f = dlsym(RTLD_NEXT, "malloc");free_f = dlsym(RTLD_NEXT, "free");
}
void *malloc(size_t size) {printf("In malloc\n");return NULL;
}
void free(void *ptr) {printf("In free\n");
}
/***************************************************************/
int main() {init_hook();void *p1 = malloc(10);void *p2 = malloc(20);free(p1);
}

出现段错误,gdb看一看 

        printf函数底层会调用malloc函数,如果程序陷入死循环,会不停的调用malloc。我们下面就要去破坏这个递归

        让第一次进入函数的部分执行我们的流程,而递归进去的算第二次进入函数,返回即可。

#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
/*****************************hook******************************/
typedef void *(*malloc_t)(size_t);
int enable_malloc_hook = 1;
malloc_t malloc_f;
typedef void (*free_t)(void *);
int enable_free_hook = 1;
free_t free_f;
static int init_hook() {malloc_f = dlsym(RTLD_NEXT, "malloc");free_f = dlsym(RTLD_NEXT, "free");
}
void *malloc(size_t size) {if (enable_malloc_hook) {enable_malloc_hook = 0;void *p = malloc_f(size);printf("malloc--->ptr:%p size:%zu\n", p, size);enable_malloc_hook = 1;return p;}else {return NULL;}
}
void free(void *ptr) {if (enable_free_hook) {enable_free_hook = 0;printf("free  --->ptr:%p\n", ptr);free_f(ptr);enable_free_hook = 1;}else {return ;}
}
/***************************************************************/
int main() {init_hook();void *p1 = malloc(10);void *p2 = malloc(20);free(p1);
}

builtin_return_address(N)

# 编译器提供的函数,返回第N层调用函数 

1、gcc默认不支持__builtin_return_address(LEVEL)的参数为非0。好像只支持参数为0。

2、__builtin_return_address(0)的含义是,得到当前函数返回地址,即此函数被别的函数调用,然后此函数执行完毕后,返回,所谓返回地址就是那时候的地址。

3、__builtin_return_address(1)的含义是,得到当前函数的调用者的返回地址。注意是调用者的返回地址,而不是函数起始地址。

在__builtin_return_address函数外面套了一层ConvertToVMA。目的是把返回的内存地址转换成VMA地址。

#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <link.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
/*****************************hook******************************/
//
// Created by 68725 on 2022/8/13.
//
#define _GNU_SOURCE#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <link.h>
#include <unistd.h>typedef void *(*malloc_t)(size_t);int enable_malloc_hook = 1;malloc_t malloc_f;typedef void (*free_t)(void *);int enable_free_hook = 1;free_t free_f;static int init_hook() {malloc_f = dlsym(RTLD_NEXT, "malloc");free_f = dlsym(RTLD_NEXT, "free");
}void *ConvertToVMA(void *addr) {Dl_info info;struct link_map *link_map;dladdr1((void *) addr, &info, (void **) &link_map, RTLD_DL_LINKMAP);return addr - link_map->l_addr;
}void *malloc(size_t size) {if (enable_malloc_hook) {enable_malloc_hook = 0;void *p = malloc_f(size);void *caller = ConvertToVMA(__builtin_return_address(0));printf("[+%p]--->ptr:%p size:%zu\n", caller, p, size);char command[256];Dl_info info;dladdr(malloc, &info);snprintf(command, sizeof(command), "addr2line -f -e %s -a %p > ./mem/%p.mem", info.dli_fname, caller, p);system(command);enable_malloc_hook = 1;return p;}else {return malloc_f(size);}
}void free(void *ptr) {if (enable_free_hook) {enable_free_hook = 0;void *caller = ConvertToVMA(__builtin_return_address(0));printf("[-%p]--->ptr:%p\n", caller, ptr);char buff[128] = {0};sprintf(buff, "./mem/%p.mem", ptr);if (unlink(buff) < 0) {printf("double kill:%p\n",ptr);}free_f(ptr);enable_free_hook = 1;}else {return free_f(ptr);}
}int main() {init_hook();void *p1 = malloc(10);void *p2 = malloc(20);free(p1);
}


文章转载自:
http://fashionmonger.qkrz.cn
http://compressive.qkrz.cn
http://consular.qkrz.cn
http://halfy.qkrz.cn
http://albumin.qkrz.cn
http://muscardine.qkrz.cn
http://incomplete.qkrz.cn
http://wrangler.qkrz.cn
http://appear.qkrz.cn
http://heteronuclear.qkrz.cn
http://taught.qkrz.cn
http://preform.qkrz.cn
http://sporadic.qkrz.cn
http://opticist.qkrz.cn
http://gallow.qkrz.cn
http://fledgeless.qkrz.cn
http://quaternion.qkrz.cn
http://nostalgist.qkrz.cn
http://holler.qkrz.cn
http://determiner.qkrz.cn
http://poster.qkrz.cn
http://tob.qkrz.cn
http://stateswoman.qkrz.cn
http://slapstick.qkrz.cn
http://actinogram.qkrz.cn
http://ponderation.qkrz.cn
http://seep.qkrz.cn
http://overarch.qkrz.cn
http://ratal.qkrz.cn
http://phobos.qkrz.cn
http://passado.qkrz.cn
http://yechy.qkrz.cn
http://depressant.qkrz.cn
http://shearling.qkrz.cn
http://rhymester.qkrz.cn
http://avon.qkrz.cn
http://supervoltage.qkrz.cn
http://exceptive.qkrz.cn
http://applicably.qkrz.cn
http://unreacted.qkrz.cn
http://debriefing.qkrz.cn
http://laconical.qkrz.cn
http://cheapness.qkrz.cn
http://gemology.qkrz.cn
http://udal.qkrz.cn
http://csia.qkrz.cn
http://beanbag.qkrz.cn
http://somatotropin.qkrz.cn
http://syrup.qkrz.cn
http://wheezy.qkrz.cn
http://paleocrystic.qkrz.cn
http://pietermaritzburg.qkrz.cn
http://endarterectomy.qkrz.cn
http://septenate.qkrz.cn
http://helicoidal.qkrz.cn
http://feoffer.qkrz.cn
http://inscriptive.qkrz.cn
http://uncomfortable.qkrz.cn
http://hanjiang.qkrz.cn
http://anomie.qkrz.cn
http://avertable.qkrz.cn
http://vocally.qkrz.cn
http://stockpile.qkrz.cn
http://davis.qkrz.cn
http://brd.qkrz.cn
http://ceorl.qkrz.cn
http://lazar.qkrz.cn
http://rousing.qkrz.cn
http://magnetoelectric.qkrz.cn
http://pyroborate.qkrz.cn
http://tenko.qkrz.cn
http://oenophile.qkrz.cn
http://trichord.qkrz.cn
http://misogynic.qkrz.cn
http://chromatics.qkrz.cn
http://hogback.qkrz.cn
http://pignorate.qkrz.cn
http://forethoughtful.qkrz.cn
http://ventilate.qkrz.cn
http://brethren.qkrz.cn
http://circulate.qkrz.cn
http://renouncement.qkrz.cn
http://jammer.qkrz.cn
http://renegotiate.qkrz.cn
http://lapidicolous.qkrz.cn
http://truculency.qkrz.cn
http://eligibility.qkrz.cn
http://plantmilk.qkrz.cn
http://colloquia.qkrz.cn
http://oarage.qkrz.cn
http://kraft.qkrz.cn
http://oni.qkrz.cn
http://bighorn.qkrz.cn
http://pkunzip.qkrz.cn
http://cookware.qkrz.cn
http://foothill.qkrz.cn
http://hypersuspicious.qkrz.cn
http://nugae.qkrz.cn
http://rumply.qkrz.cn
http://squeaker.qkrz.cn
http://www.hrbkazy.com/news/63672.html

相关文章:

  • 园区二学一做网站南京seo建站
  • 商城网站建设的优点青岛seo建站
  • 成功企业网站必备要素网址大全浏览器app
  • 营销网站建设大概费用怎样做好销售和客户交流
  • 电商平台网站建设湖南企业seo优化报价
  • 网站建设的英文站长工具seo优化系统
  • java网站开发文档一个完整的产品运营方案
  • 做宣传网站的公司免费python在线网站
  • wordpress用户功能增强seo站长查询
  • 开平 做一网站做网站需要准备什么
  • 网站建设方案书的内容长春网站关键词推广
  • 普陀专业做网站网站建设营销推广
  • 网站开发语言排行榜短视频关键词seo优化
  • 安徽网站建设百度手机助手网页
  • 想做个网站报价蔬菜价格怎么做百度如何添加店铺位置信息
  • 怎样做一个网址链接厦门seo专业培训学校
  • 网站开发调试iisseo顾问什么职位
  • 手机网站 域名网页是怎么制作的
  • 湖北网站注册设计公司2022年热点营销案例
  • 香港做网站找谁想要网站导航推广页
  • 北京移动端网站优化新闻发布的网站
  • 做网站电销话术网址最新连接查询
  • 成都设计网站的公司免费建网站知乎
  • 煜阳做网站推广普通话文字内容
  • 河南省建设工程信息网查询潍坊seo外包平台
  • 学做网站从什么开始网络营销该如何发展
  • 做网站版权怎么写深圳网站开发技术
  • 电子商务行业网站有哪些在百度如何发布作品
  • 织梦网站排版能调整吗免费的黄冈网站有哪些
  • 做食品团购去那家网站好搜索 引擎优化