亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

軟件測試教程:目標代碼插樁的三種執行模式

標簽:
Html5

目标代码插桩

目标代码插桩是指向目标代码(二进制代码)插人测试代码获取程序运行信息的测试方法,也称为动态程序分析方法。在进行目标代码插桩之前,测试人员要对目标代码逻辑结构进行分析,从而确认需要插桩的位置。

目标代码插桩对程序运行时的内存监控、指令跟踪、错误检测等有着重要意义。相比于逻辑覆盖法,目标代码插桩在测试过程中不需要代码重新编译或链接程序,并且目标代码的格式和具体的编程语言无关,主要和操作系统相关,因此目标代码插桩有着广泛的使用。

https://img1.sycdn.imooc.com/cf34ee6808374e8510230781.jpg

                                              ▲ 图源处理网https://www.91chuli.com/,如侵删

1. 目标代码插桩的原理

目标代码插桩法的原理是在程序运行平台和底层操作系统之间建立中间层,通过中间层检查执行程序、修改指令,开发人员、软件分析工程师等对运行的程序进行观察,判断程序是否被恶意攻击或者出现异常行为,从而提高程序的整体质量。

2. 目标代码插桩法的三种执行模式

由于目标代码是可执行的二进制程序,因此目标代码的插桩可分为两种情况:一种是对未运行的目标代码插桩,从头到尾插人测试代码,然后执行程序。这种方式适用于需要实现完整系统或仿真时进行的代码覆盖测试。另一种情况是向正在运行的程序插人测试代码,用来检测程序在特定时间的运行状态信息。

目标代码插桩具有以下3种执行模式。

(1)即时模式(sus-In-Tme):原始的二进制或可执行文件没有被修改或执行,将修改部分的二进制代码生成文件副本存储在新的内存区域中,在测试时仅执行修改部分的目标代码。

(2)解释模式(tepetation Mode):在解释模式中目标代码被视为数据,测试人员插入的测试代码作为目标代码指令的解释语言,每当执行一条目标代码指令,程序就会在测试代码中查找并执行相应的替代指令,测试通过替代指令的执行信息就可以获取程序的运行信息。

(3)探测模式(Probe Mode):探测模式使用新指令覆盖旧指令进行测试,这种模式在某些体系结构(如x86)中比较好用。

3. 目标代码插桩工具

由于目标程序是可执行的二进制文件,人工插人代码是无法实现的,因此目标代码插桩一般通过相应的插桩工具实现,插桩工具提供的API可以为用户提供访问指令。

常见的目标代码插桩工具主要有以下2种。

(1) Pin-Dynamic Binary Instrumentation Tools(简称Pin)

Pin是由Intel公司开发的免费框架,它可以用于二进制代码检测与源代码检测。Pin支持IA-32、x86-64、MIC体系,可以运行在Linux、Windows和Android平台。Pin具有基本块分析器、缓存模拟器、指令跟踪生成器等模块,使用该工具可以创建程序分析工具、监视程序运行的状态信息等。Pin非常稳定可靠,常用于大型程序测试,如fice办公软件、虚拟现实引擎等。

(2) DynamoRIO

DymamoRIO是一个许可的动态二进制代码检测框架,作为应用程序和操作系统的中间平台,它可以在程序执行时实现程序任何部分的代码转换。DyamoRfIO 支持1A-32、AMD64、Arb64体系,可以运行在Limuy Windowus 和Adoid平台。DyamRIO包含内存调试工具、内存跟踪工具、指令跟踪工具等。


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消