咨询热线
来源:南宁IT培训学校 时间:2022/1/6 17:48:12
目标代码插桩是指向目标代码(二进制代码)插人测试代码获取程序运行信息的测试方法,也称为动态程序分析方法。在进行目标代码插桩之前,测试人员要对目标代码逻辑结构进行分析,从而确认需要插桩的位置。
目标代码插桩对程序运行时的内存监控、指令跟踪、错误检测等有着重要意义。相比于逻辑覆盖法,目标代码插桩在测试过程中不需要代码重新编译或链接程序,并且目标代码的格式和具体的编程语言无关,主要和操作系统相关,因此目标代码插桩有着广泛的使用。
1. 目标代码插桩的原理
目标代码插桩法的原理是在程序运行平台和底层操作系统之间建立中间层,通过中间层检查执行程序、修改指令,开发人员、软件分析工程师等对运行的程序进行观察,判断程序是否被恶意攻击或者出现异常行为,从而提高程序的整体质量。
2. 目标代码插桩法的三种执行模式
由于目标代码是可执行的二进制程序,因此目标代码的插桩可分为两种情况:一种是对未运行的目标代码插桩,从头到尾插人测试代码,然后执行程序。这种方式适用于需要实现完整系统或仿真时进行的代码覆盖测试。另一种情况是向正在运行的程序插人测试代码,用来检测程序在特定时间的运行状态信息。
目标代码插桩具有以下3种执行模式。
(1)即时模式(sus-In-Tme):原始的二进制或可执行文件没有被修改或执行,将修改部分的二进制代码生成文件副本存储在新的内存区域中,在测试时仅执行修改部分的目标代码。
(2)解释模式(tepetation Mode):在解释模式中目标代码被视为数据,测试人员插入的测试代码作为目标代码指令的解释语言,每当执行一条目标代码指令,程序就会在测试代码中查找并执行相应的替代指令,测试通过替代指令的执行信息就可以获取程序的运行信息。
(3)探测模式(Probe Mode):探测模式使用新指令覆盖旧指令进行测试,这种模式在某些体系结构(如x86)中比较好用。