刷机包中插桩什么意思

刷机包中插桩什么意思,第1张

程序插桩,最早是由J.C. Huang 教授提出的,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。

由于程序插桩技术是在被测程序中插入探针,然后通过探针的执行来获得程序的控制流和数据流信息,以此来实现测试的目的。因此,根据探针插入的时间可以分为目标代码插桩和源代码插桩。

目标代码插桩的前提是对目标代码进行必要的分析以确定需要插桩的地点和内容。由于目标代码的格式主要和 *** 作系统相关,和具体的编程语言及版本无关猛弊,所以得到了广泛的应用,尤其是在需要对内存进行监控的软件中。但是由于目标代码中语法、语乱巧义信息不完整,而插桩技术需要对代码词法语法的分析有较高的要求,故在覆盖测试工具中多采用源代码插桩。

源代码插桩是在对源文件进行完整的词法分析和语法分析的基础上进行的,这就保证对源文件的插桩能够达到很高的准确度和针对性。但是源代码插桩需要接触到源代码,使得工作量较大,而且随着编码语言和版本的不同需要做一定的修改。在后面我们所提到的程序插桩均指源代码插桩。

程序插桩:是借助往被测程序中插入 *** 作,来实现测试目的的方法。 程序插桩的基本原理是在不破坏被测试程序原有逻辑完整性的前提下,在程序的相应位置上插入一些探针。这些探针本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用。通过探针的执行并输出程序的运行特征数哗知键据。基于对这些特征数据的分析,揭示程序的内部行为和特征。

源代码插桩是在程序执行前完成的。这是因为源代码插桩需要在程序正式蠢友执行之前对代码进行修改,插入额外的代码逻辑,以实现特定的目的。如果插桩是在程序执行后完成,那么程序已经开始执行了,此时无法再绝渣对其代码进行修改。

在进行源代码插桩时,通常需要使用特定的工具或库,例如LLVM、Valgrind等。这些工具一般通过静态分析、抽象语法树(AST)等技术,在代码编译期间将插桩代码嵌入到源代码中。经过这些修改后的源代码,才会被编译成可以执行的二进制文件。

因此,源代码插桩必须在程序正式执行之前进行。在运行时进行代码修改或注入,通常是通过动态链接库或Hook技术实现,而不是通过源代并档悄码插桩完成的。

内核工具KGDB调试环境需要为Linux 内核加上 kgdb补丁,补丁实现GDB远程调试所需要的功能,包括命令处理、陷阱处理及串口通信3个主要的部分。KGDB补丁的主要作用是在Linux 内核中添加了一个调试Stub。调试Stub是Linux 内核中的一小段代码,是运行GDB的开发机和所调试内核之间的一个媒介。GDB和调试stub之间通过GDB串行协议进行通信。GDB串行协议是-种基于消息的ASCII 码协议,包含了各种调试命令。当设置断点时,KGDB将断点的指令替换为一条 trap指令,当执行到断点时控制权就转移到调试 stub中去。此时,调试stub 的任务做搜明就是使用远程串行通信协议将当前环境传送给GDB,然后从GDB处接收命令。GDB命令告诉stub 下一步该做什么,当stub收到继续执行的命令时,将恢复程序的运行环境,把对 CPU的控制权重新交还给内核。KGDB补丁给内核添加以下3个部件:

(1 ) GDB stub

GDB stub被称为调试插桩(简称为stub),是KGDB调试器的核心。它是Linux内核中的一小段代码,用来处理主机上: GDB发来的各种请求并且在内核处于被调试状态时,控制目标机板上的处理器。

(2)修改异常处理函数

当这个异常发生时,内核将控制权交给KGDB调试器,程序进入KGDB提供的异常处理函数中。在里面,纯告可以分析程序的各种情况。

(3)串口通信

GDB和 stub之间通过GDB串行协议进行通信。它是一种基于消息的ASCII 码协议,包含了各种调试命令。除串口外,也可以使用网卡进行通信。以设置内核断点为例说明KGDB与GDB之间的工作过程。设置断点时,KGDB修改内核代码,将断点位置的指令替换成一条异常指令(在ARM中这是一条未定义的指令)。当执行到断点时发生异常,控制权转移到stub 的异常处理函数中。此时,stub的任务就是使用GDB串行通信协议将当前环境传送给GDB,然后从GDB处接漏启收命令,GDB命令告诉stub下一步该做什么。当stub收到继续执行的命令时,将恢复原来替换的指令、恢复程序的运行环境,把对CPU的控制权重新交还给内核。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12346933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存