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

广州公司网站开发wordpress炫酷插件

广州公司网站开发,wordpress炫酷插件,如何查网站是哪家公司做的,枣庄做网站制作目录 hook hook是什么 dlsym()函数 hook的实现步骤 加入hook的demo C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 hook hook可以把系统或第三方库提供的函数,替换成我们写的同名函数。会调用我们实现的函数。 hook是什么 hook提供了两…

目录

hook

hook是什么

dlsym()函数

hook的实现步骤

加入hook的demo


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

hook

hook可以把系统或第三方库提供的函数,替换成我们写的同名函数。会调用我们实现的函数。

hook是什么

hook提供了两个接口;1. dlsym()是针对系统的,系统原始的api。2. dlopen()是针对第三方的库。

dlsym()函数

获取共享对象或可执行文件中符号的地址。
函数原型:

描述:

        函数dlsym()接受dlopen()返回的动态加载共享对象的“句柄”以及以空结尾的符号名,并返回该符号加载到内存中的地址。如果在指定对象或加载对象时dlopen()自动加载的任何共享对象中找不到该符号,dlsym()将返回NULL。(dlsym()执行的搜索是通过这些共享对象的依赖关系树进行的广度优先搜索。)

        handle中可以指定两个特殊的伪句柄:

返回值:

成功时,这些函数返回与符号关联的地址。

失败时,返回NULL;可以使用dlerror()诊断错误的原因。

hook的实现步骤

/* ******* ******************hook****************** ******* */
//第一步定义目标函数一样的类型
typedef int (*pthread_mutex_lock_t)(pthread_mutex_t *mutex);
typedef int (*pthread_mutex_unlock_t)(pthread_mutex_t *mutex);pthread_mutex_lock_t pthread_mutex_lock_f;
pthread_mutex_unlock_t pthread_mutex_unlock_f;//第二步实现目标函数名一致
//pthread_mutex_lock()会调用本函数
int pthread_mutex_lock(pthread_mutex_t *mutex) {pthread_t selfid = pthread_self();pthread_mutex_lock_f(mutex);printf("pthread_mutex_lock: %ld, %p\n", selfid, mutex);
} //pthread_mutex_unlock()会调用本函数
int pthread_mutex_unlock(pthread_mutex_t *mutex) {pthread_t selfid = pthread_self();pthread_mutex_unlock_f(mutex);printf("pthread_mutex_unlock: %ld, %p\n", selfid, mutex);
} //第三步dlsym,放到main初始化
void init_hook(void) {pthread_mutex_lock_f = dlsym(RTLD_NEXT, "pthread_mutex_lock");pthread_mutex_unlock_f = dlsym(RTLD_NEXT, "pthread_mutex_unlock");
}

加入hook的demo

//gcc Dead_lock.c -lpthread -ldl
#define _GNU_SOURCE
#include <dlfcn.h>#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>#include <unistd.h>/* ******* ******************hook****************** ******* */
//第一步定义目标函数一样的类型
typedef int (*pthread_mutex_lock_t)(pthread_mutex_t *mutex);
typedef int (*pthread_mutex_unlock_t)(pthread_mutex_t *mutex);pthread_mutex_lock_t pthread_mutex_lock_f;
pthread_mutex_unlock_t pthread_mutex_unlock_f;//第二步实现目标函数名一致
//pthread_mutex_lock()会调用本函数
int pthread_mutex_lock(pthread_mutex_t *mutex) {pthread_t selfid = pthread_self();pthread_mutex_lock_f(mutex);printf("pthread_mutex_lock: %ld, %p\n", selfid, mutex);
} //pthread_mutex_unlock()会调用本函数
int pthread_mutex_unlock(pthread_mutex_t *mutex) {pthread_t selfid = pthread_self();pthread_mutex_unlock_f(mutex);printf("pthread_mutex_unlock: %ld, %p\n", selfid, mutex);
} //第三步dlsym,放到main初始化
void init_hook(void) {pthread_mutex_lock_f = dlsym(RTLD_NEXT, "pthread_mutex_lock");pthread_mutex_unlock_f = dlsym(RTLD_NEXT, "pthread_mutex_unlock");
}//测试代码
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex3 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex4 = PTHREAD_MUTEX_INITIALIZER;void *thread_funcA(void *arg) {pthread_mutex_lock(&mutex1);sleep(1);pthread_mutex_lock(&mutex2);printf("thread_funcA\n");pthread_mutex_unlock(&mutex2);pthread_mutex_unlock(&mutex1);}void *thread_funcB(void *arg) {pthread_mutex_lock(&mutex2);sleep(1);pthread_mutex_lock(&mutex3);printf("thread_funcB\n");pthread_mutex_unlock(&mutex3);pthread_mutex_unlock(&mutex2);}void *thread_funcC(void *arg) {pthread_mutex_lock(&mutex3);sleep(1);pthread_mutex_lock(&mutex4);printf("thread_funcC\n");pthread_mutex_unlock(&mutex4);pthread_mutex_unlock(&mutex3);
}void *thread_funcD(void *arg) {pthread_mutex_lock(&mutex4);sleep(1);pthread_mutex_lock(&mutex1);printf("thread_funcD\n");pthread_mutex_unlock(&mutex1);pthread_mutex_unlock(&mutex4);}int main() {pthread_t tida, tidb, tidc, tidd;init_hook();pthread_create(&tida, NULL, thread_funcA, NULL);pthread_create(&tidb, NULL, thread_funcB, NULL);pthread_create(&tidc, NULL, thread_funcC, NULL);pthread_create(&tidd, NULL, thread_funcD, NULL);pthread_join(tida, NULL);pthread_join(tidb, NULL);pthread_join(tidc, NULL);pthread_join(tidd, NULL);return 0;
}

http://www.yayakq.cn/news/807648/

相关文章:

  • 什么是新闻源网站江苏哪家做网站排名比较好
  • 公司做网站需要准备哪些资料吕梁网站定制
  • 商城网站建设目标做软件项目的网站
  • 如何做网站运营可视化网页编辑工具
  • 去掉wordpress顶部短视频seo推广隐迅推专业
  • 个人网站毕业设计网站pv怎么统计
  • 起公司名称大全免费网站网站建设实训总结范文
  • 建设银行手机个人网站大连建设学校
  • 深圳营销网站有限公司好玩的传奇
  • 模仿网站建设wordpress标签id在哪里
  • 免费企业网站php源码青岛网站建设有哪些公司
  • wordpress网站维护页面注册网站代码
  • 城乡建设局网站首页深圳海圳公司官网
  • 网站底部菜单WordPress表白墙主题
  • 导购网站如何做淘宝客网站建设与管理维护 李建青
  • 孝感网站建设xgsh广州:推动优化防控措施落
  • 农业网站建设招标书现在有哪些免费推广平台
  • 企业网站建设流程图化妆品网站建设思路
  • 国家工信部 网站备案自定义wordpress的字体
  • 企业英语网站电子商务网站建设可运用的技术
  • 网站建设和推广话术网站建设信用卡取消
  • 公司网站建设推广方案模板wordpress 获取当前用户
  • 如何做网站美化山东前十名建筑设计院
  • wordpress描述设置盐城seo排名
  • wordpress手机插件怎么用广东seo网络培训
  • 茶叶网站策划网页设计精选网站
  • 网站统计系统 怎么做十个有创意的线上活动
  • 山东省建设厅官方网站怎么样jsp开发网站
  • 万州医院网站建设免费网站是
  • 家庭带宽100m做网站建筑装饰装修工程公司