首页 > 其他分享 >一个运行时打桩的模板

一个运行时打桩的模板

时间:2025-01-05 22:44:07浏览次数:1  
标签:zwl long rbp STUB 打桩 模板 FUN 运行 movq

被打桩的函数是STUB_FUN, 可以替换成如__cudaRegisterFunction, 另外插入的函数zwl_profiler可另外定义,

	.text
	.section	.rodata
.LC0:
	.string	"STUB_FUN"
	.text
	.globl	STUB_FUN
	.type	STUB_FUN, @function
STUB_FUN:
.LFB15:
	endbr64
	pushq	%rbp
	movq	%rsp, %rbp
	subq	$64, %rsp
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	%rdx, -40(%rbp)
	movq	%rcx, -48(%rbp)
	movq	%r8, -56(%rbp)
	movq	%r9, -64(%rbp)
	call	zwl_profiler
	leaq	.LC0(%rip), %rax
	movq	%rax, %rsi
	movq	$-1, %rdi
	call	dlsym@PLT
	movq	%rax, -8(%rbp)
	movq	-8(%rbp), %r8
	movq	-48(%rbp), %rcx
	movq	-40(%rbp), %rdx
	movq	-32(%rbp), %rsi
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	*%r8
	leave
	ret
.LFE15:
	.size	STUB_FUN, .-STUB_FUN
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4: 

zwl_prifler定义,

#include <stdio.h>

void zwl_profiler(void* handle, void* func, char* funcName) {
  printf("register %p: %s\n", func, funcName);
}

需要注意的点是被打桩的函数STUB_FUN不能在zwl_profiler中使用,如printf, malloc函数不行,需要另外想办法。

gcc stub.s zwl_profiler.c -g -shared -o ll.so
export LD_PRELOAD=$PWD/ll.so

标签:zwl,long,rbp,STUB,打桩,模板,FUN,运行,movq
From: https://www.cnblogs.com/zwlwf/p/18654088

相关文章

  • java ssm基于Android的远程家庭健康监测管理系统uniapp(源码+文档+运行视频+讲解视频)
     文章目录系列文章目录前言一、开发介绍二、详细视频演示三、项目部分实现截图四、uniapp介绍五、系统测试六、代码参考源码获取目的摘要:基于JavaSSM和Android的远程家庭健康监测管理系统为家庭健康管理带来了新的方式。该系统借助UniApp实现多平台使用,方便......
  • [ Netty ] 通过Netty聊天业务来加深理解Netty运行以及网络编程.
    引言这几天在学习Netty网络编程的过程当中对Netty的运作原理及流程有一定的了解,通过Netty实现聊天业务来加深对Netty的理解.这里用一张图概括运行流程这里我在Github上面找到一位大神总结的尚硅谷的学习笔记,里面有写Netty的运作原理(但是因为前面一直在讲原理我自己身原因容......
  • 剖析Vue2内部运行机制
    Vue.js运行机制全局概览全局概览这一节笔者将为大家介绍一下Vue.js内部的整个流程,希望能让大家对全局有一个整体的印象,然后我们再来逐个模块进行讲解。从来没有了解过Vue.js实现的同学可能会对一些内容感到疑惑,这是很正常的,这一节的目的主要是为了让大家对整个流程有一个大......
  • 如何使用可视化工具便捷修改网站模板?
    使用可视化工具可以简化网站模板的修改过程,无需编写代码。以下是详细步骤:选择可视化工具: 选择适合的可视化工具,如Elementor、Webflow或Wix。这些工具通常提供拖放界面,方便用户进行设计。注册和登录: 注册并登录所选的可视化工具账户。导入模板: 如果使用的是第三方模板,可以导......
  • sql运行慢,如何根据执行计划分析原因 oracle
    oracle的执行计划的语法是:EXPLAINPLANFOR sql语句;select*fromtable(dbms_xplan.display);第一行是生成执行计划,第二行是查看执行计划,一般一起执行.书写时,一般把sql语句换行输入代码:输出注意:有2个输出,Explain对应的是生成执行计划语句,没有输出结果,Sel......
  • 提升网站主页设计,掌握主页模板修改技巧
    修改网站主页模板可以显著提升用户体验和品牌形象。以下是具体操作步骤和建议:平台类型修改方法CMS系统登录到后台管理界面,在“模板”或“外观”选项中找到当前使用的模板进行编辑。可以使用可视化编辑器或直接编辑HTML/CSS文件。自定义模板如果使用了自定义模板,可......
  • 选择合适工具,掌握静态网站模板修改方法
    静态网站模板通常使用简单的HTML、CSS和JavaScript文件。以下是具体操作步骤和建议:工具类型使用方法代码编辑器使用代码编辑器(如VSCode、SublimeText)打开模板文件,进行必要的修改。文本编辑器使用文本编辑器(如Notepad++、Atom)打开模板文件,进行必要的修改。图形......
  • 物联网工程技术毕业设计题目万能选题方法模板(源码+原理图+PCB+洞洞板+开题报告+任务书
    万功题目模板**如:**1、把物联网技术改成STM32单片机,就成了《基于STM32的智能交通信号控制系统设计》2、把物联网改成89C51单片机,就成了《基于89C51的智能交通信号控制系统设计》3、把物联网改成ESP32单片机,就成了《基于ESP32的智能交通信号控制系统设计》以此类推下面本......
  • 模板多项式 exp
    ABC387G求\(n\)个点,每个回路长度都是质数的有标号无向连通图个数。首先回路之间肯定点不相交,否则若长度为\(a,b\)的两个点相交回路有\(k\)条公共边,则形成一个长度为\(a+b-2k\)的回路,而\(a+b-2k\)肯定是偶数且不是\(2\),它肯定不是质数。所以把回路缩起来之后,合法的......
  • Mono里运行C#脚本23—mono_jit_exec
    前面已经分析一部分代码,可以打下基础知识,当然还有很多其它部分的内容,没有深入去了解。接着下来,我们去探索一下怎么样找到执行应用程序的入口。在这个嵌入脚本程序里,有一个这样的函数调用:main_function(domain,file,argc-1,argv+1);这个函数的作用,就是找到C#里Main......