首页 > 软件测试/ 正文
反编译技术在软件可靠性测试中的作用
2012-10-17 18:04:48 ℃引言
反编译技术是通过对低级语言代码(字节码或者汇编代码等)进行分析转化,得到等价的高级语言(C或者Java等)代码的过程。它涉及指令系统,可执行文件格式,反汇编技术,数据类型分析技术,控制流分析技术和高级代码生成技术等。反编译处理过程一般可以分为7个阶段:文件转载,指令解码,语义映射,相关图构造,过程分析,类型分析和结果输出等。
软件可靠性测试是为了达到或验证用户对软件的可靠性要求而对软件进行的测试,通过测试发现并纠正软件中的缺陷,提高其可靠性水平,并验证它是否达到了用户的可靠性要求。
本文设计并实现了针对适用于android系统的apk应用程序的反编译工具。通过对一个apk应用程序的逆向分析,描述了反编译技术在软件测试中的作用。
实验过程
本实验通过对“com.example.android.BluetoothChat.BluetoothChat.apk”,的分析描述了反编译在软件测试中的作用。我们看一下测试用例的相关信息。
1、为了分析该apk程序的代码结构,首先,我们要对apk文件进行反汇编获得其对应的汇编代码,该过程通过apktool工具实现:
2、通过该过程处理,我们就得到了apk程序反汇编后的smali代码形式,smali文件保存在com.example.android.BluetoothChat.BluetoothChat文件夹下。Smali代码形式如下
3、在获得smali代码后,我们设计的反编译器就针对smali文件进行处理以得到对应的java代码形式。该软件对指定目录下的所有文件和文件夹进行遍历,如果遇到smali文件就对其进行反编译处理,如果是其他类型文件就直接将其复制到目标文件夹,如果遇到的是文件夹就递归进行遍历直到指定目录下的所有文件被遍历。如果遇到的是smali文件,首先,对文件中的指令进行装载,即将文件中的每一条指令进行读取分析并保存到设计好的数据结构中,构成指令序列;其次,对指令序列进行分析确定数据域和代码域,将数据域的数据提取出来并对代码域进行分析,查找出类的函数信息。再次,对类的每一个函数进行处理:包括基本快划分,控制流图构造,控制流分析,控制树生成,参数类型确定和高级代码生成等。最后对类的信息进行处理并输出。这样就得到了smali文件对应的java代码形式。其处理界面为:
- 上一篇:谷歌如何做软件测试?——第七部分
- 下一篇:浅谈基于watir的前端敏捷测试
更多.NET培训好不好,办公软件培训,电脑软件培训学校,.NET软件培训,软件培训机构,软件开发培训相关文章
- 移动应用自动化测试面临的挑战
- 基于代码的场景测试
- 我的软件测试之旅:(3)同期——加入测试自动化小组
- 谷歌如何做软件测试?——第七部分
- 基于TestNG 与Selenium 的自动化测试设计与实施
- 对软件测试的要求太高?
- 探索式测试的一些思考和实践(一)
- 自动化软件测试推广经验分析总结
- 软件测试员需要学习的基本知识
- 基于审查的软件过程改进
- 质量管理:IT项目计划中质量目标的确定
- QA工作两个月的感受
- 全功能团队——没有QA的团队
- 过程改进漫漫谈之问题分析五步法
- 软件质量保证需要系统性的方法论
- 软件质量保证工作随笔
- 实施CMMI3的体会
- 软件测试质量和效率评价之我见
- 浅谈软件质量保证
- 软件开发各阶段的质量控制
- 什么是NTFS
- 桌面东西多会影响电脑速度吗
- 为什么电脑硬盘显示的容量比实际的小?
- CD-ROM CD-R CD-RW之间的区分
- 操作系统知识
- 各种编程语言的优缺点
- 2014年应届生软件测试工程师薪资多少?
- 初中生学软件开发专业能改变命运吗
- 郑州Java培训哪家适合大学应届毕业生
- 搜索
-
- 热门标签