首页 > 软件测试/ 正文
反汇编技术在代码测试中的应用
2012-10-12 00:01:38 ℃引言
随着计算机技术的不断发展和应用领域的不断扩大,人们对计算机软件的安全性的要求越来越高。而作为保证软件质量最有效的测试技术,已经越来越受到人们的重视。反汇编技术可以帮助软件测试人员更轻松的理解二进制代码的行为,从而测试软件的正确性和可靠性。
文中主要讨论了反汇编技术,及其在二进制代码分析和测试中的作用。通过反汇编技术,可以在不改变代码含义的前提下,把难懂的二进制代码转化为更清晰易懂的汇编代码。可以帮助测试人员理解目标代码,提高测试效率。
反汇编技术简介
反汇编:把目标代码转为汇编代码的过程,也可说是把机器语言转为汇编语言代码,低级转高级的意思,常用于软件破解。
从对目标代码的执行角度来看,反汇编分为静态反汇编和动态反汇编,前者是指将二进制目标文件根据对应的指令系统转换为相应的可读的汇编语句,但是并不执行这段程序;后者主要是指要跟踪执行目标文件,具体反映出程序的运行情况。静态反汇编的优点之一是能够一次对整个文件进行处理,而动态反汇编只能处理程序中被执行到的部分;另一个优点是静态反汇编的时间与文件的长度成正比,而动态反汇编的时间与被执行的指令数成正比。通常认为前者的时间比后者少,静态反汇编的效率更高。
本文主要探讨静态反汇编在软件测试中的使用。
二进制代码简介
由于输入的目标代码是hex文件,所以,我们重点讨论hex文件的格式。
Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件。
一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式.[10]
:llaaaatt[dd...]cc
每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述。
:冒号是每一条Intel HEX记录的开始
ll是这条记录的长度域,他表示数据(dd)的字节数目。
aaaa是地址域,他表示数据的起始地址
<如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址,对于不支持扩展段地址和扩展线性地址的,如89C51,这就是此条记录的起始地址>
tt这个域表示这条HEX记录的类型,他有可能是下面这几种类型
00 ----数据记录
01 ----文件结束记录
02 ----扩展段地址记录
04 ----扩展线性地址记录
dd是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以查看ll域的说明
cc是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对
<不包括本效验字和冒号>所表示的十六进制数字
<一对字母表示一个十六进制数,这样的一个十六进制数为一个字节>
都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc.
<例如::0300000002005E9D
cc=0x01+NOT((0x03+0x00+0x00+0x00+0x02+0x00+0x5E)%0x100)=0x01+0x9C=0x9D
- 上一篇:为什么要测试驱动开发(TDD)?
- 下一篇:为什么脚本化测试不适合新手
更多郑州北大青鸟,软件测试从零开始,河南北大青鸟电脑培训学校在哪里呢,郑州java大数据培训学校哪家好呢,郑州全栈式软件开发工程师培训学校哪家好,郑州北大青鸟软件开发培训学费怎么收的相关文章
- 代码审查最佳实践
- 每日构建和冒烟测试
- 初步介绍自动化测试
- 敏捷测试的开发流程
- 浅谈随机测试
- 我的软件测试之旅:(7)启程——Scrum中的测试工作者
- 敏捷测试的组织挑战
- 分布式系统测试实践
- 处理器模拟技术在软件可靠性测试中的作用
- 新浪会员探索性测试思路详解
- 质量保证漫漫谈之SQA组织的建设
- 同行评审常见问题解答
- 软件质量保证工作随笔
- 软件质量保证管理办法
- 实时控制软件的质量
- 实用SOA测试指南:测试流程起始步骤
- 基于关键性和安全性的软件质量保证
- Win8将不再支持DVD播放 重点支持网络媒体
- 什么是NTFS
- 欢迎加电脑知识交流群
- 手机二维码是什么
- 数据恢复基础知识及解决方案
- 桌面东西多会影响电脑速度吗?
- 设定虚拟内存的误区
- WP8与WP7对比及区别
- 为什么应该关闭屏保
- 电脑是如何工作的
- 各种编程语言的优缺点
- 目前的软件测试工程师们是时候反省一下了!
- 河南郑州Java培训学校哪家好
- 搜索
-
- 热门标签