软件的黑盒和白盒分析方法
2011-03-28 10:31
106 查看
软件的黑盒和白盒分析方法
在无法获得程序源代码文件的情况下,町以通过黑盒分析和白盒分析的方法来分
析一个可执行程序。黑盒分析不能深入可执行程序的内部结构,仪通过分析程序的输
入和输…来推断其内部工作原理和流程。而白盒分析则是通过软件逆向分析,对可执
行程序反}L编,通过研究程序的汇编代码来确定其工怍原理和流程。
传统的黑盒分析技术相对'm言容易实施,而且可以快速了解软件的大致工作流
程。
仅凭传统的黑盒分
析方法难以准确地了解软件的工作过程以及所使用的秘密信息。
采用白盒分析技术,通过仔细地阅读程序的汇编代码,分
析软件的每一个操作,从而获得软件的整体工作流程以及所使用的各种秘密信息。但
是白盒分析也有其弱点,即容易陷入细枝末节,难以对软件的工作流程建立1个清晰
和直观的印象。凼此我们采用黑盒分析和白盒分析相结合的策略,通过两者的优势互
补,高效而准确地分析软件。
在软件的白盒分析中,主要是对软件的二进制代码进行分析,这其中
也包含两种不同的分析技术,
静态分析技术
动态分析技术
。所谓静态分析,是指不
运行软件,而仅仅观察软件的,_进制代码而进行的分析,这种分析不涉及软件在运行
过程中可能从外界获取的数据,仅仅是做逻辑上的判断。
静态分析的最大优点,是对
没有运行起来的软件的-进制代码进行扫描,得到其中的函数调用关系,划分出功能
模块,并通过一定的手段分析出部分数据结构,再结合手工分析,从而得到软件的一
个整体架构图。但由于软件并不是一个静态的实体,它的行为相逻辑流程还要依赖于
程序的输入输出和外界控制,因此,在静态分析中我们在得不到数据的情况下,对软
件的行为进行精确判断,在多数情况下是困难的。此外,由于涉及到操作系统的系统
调用和外部的库文件调用,程序代码中不可能实现所有的功能,我们还需要观察其调
用外部函数的行为,然而仅凭静态分析难以得出外部函数执行的结果[zl。
动态分析技术正是为了弥补静态分析的不足之处而产生的调试技术,这种分析使
用调试器运行待分析的程序,通过单步跟踪和设置断点,并观察程序运行过程中内存
和寄存器等的数据变化情况,研究程序的具体行为。动态分析技术具有以'优势:
(l)借助CPU执行指令的准确性,确保了程序运行的流程,不会因为人工分析的
错误而把程序的功能逻辑判断错误。
(2)可以在较高层而上抽象分析,即对于某砦函数调用,并不需要分析其具体实现,
而只需要令其执行并观察执行前后数槲结果变化即町。
(3)在执行期问根据需要更改程序的数据甚至指令,以实现更高效的分析。
但纯粹的动态分析也有缺陷:程序在调试器中运行,有'町能产生不稳定的结果,
甚至有可能导致计算机的系统崩溃。同时,动态分析不能分析整个程序的全貌,对整
个程序的结构分析不能得到令入满意的结果。
因此,我们采用了动态分析和静态分析结合的策略,在程序运行前先进行静态分
析,进行模块功能的划分,然后在此基础上进行动态调试。这样,我们既可以一直观清
晰的看到软件的结构,义可吼动态观察软件的行为,从而极大地提高了软件逆向分析的效率
Powered by Zoundry
在无法获得程序源代码文件的情况下,町以通过黑盒分析和白盒分析的方法来分
析一个可执行程序。黑盒分析不能深入可执行程序的内部结构,仪通过分析程序的输
入和输…来推断其内部工作原理和流程。而白盒分析则是通过软件逆向分析,对可执
行程序反}L编,通过研究程序的汇编代码来确定其工怍原理和流程。
传统的黑盒分析技术相对'm言容易实施,而且可以快速了解软件的大致工作流
程。
仅凭传统的黑盒分
析方法难以准确地了解软件的工作过程以及所使用的秘密信息。
采用白盒分析技术,通过仔细地阅读程序的汇编代码,分
析软件的每一个操作,从而获得软件的整体工作流程以及所使用的各种秘密信息。但
是白盒分析也有其弱点,即容易陷入细枝末节,难以对软件的工作流程建立1个清晰
和直观的印象。凼此我们采用黑盒分析和白盒分析相结合的策略,通过两者的优势互
补,高效而准确地分析软件。
在软件的白盒分析中,主要是对软件的二进制代码进行分析,这其中
也包含两种不同的分析技术,
静态分析技术
动态分析技术
。所谓静态分析,是指不
运行软件,而仅仅观察软件的,_进制代码而进行的分析,这种分析不涉及软件在运行
过程中可能从外界获取的数据,仅仅是做逻辑上的判断。
静态分析的最大优点,是对
没有运行起来的软件的-进制代码进行扫描,得到其中的函数调用关系,划分出功能
模块,并通过一定的手段分析出部分数据结构,再结合手工分析,从而得到软件的一
个整体架构图。但由于软件并不是一个静态的实体,它的行为相逻辑流程还要依赖于
程序的输入输出和外界控制,因此,在静态分析中我们在得不到数据的情况下,对软
件的行为进行精确判断,在多数情况下是困难的。此外,由于涉及到操作系统的系统
调用和外部的库文件调用,程序代码中不可能实现所有的功能,我们还需要观察其调
用外部函数的行为,然而仅凭静态分析难以得出外部函数执行的结果[zl。
动态分析技术正是为了弥补静态分析的不足之处而产生的调试技术,这种分析使
用调试器运行待分析的程序,通过单步跟踪和设置断点,并观察程序运行过程中内存
和寄存器等的数据变化情况,研究程序的具体行为。动态分析技术具有以'优势:
(l)借助CPU执行指令的准确性,确保了程序运行的流程,不会因为人工分析的
错误而把程序的功能逻辑判断错误。
(2)可以在较高层而上抽象分析,即对于某砦函数调用,并不需要分析其具体实现,
而只需要令其执行并观察执行前后数槲结果变化即町。
(3)在执行期问根据需要更改程序的数据甚至指令,以实现更高效的分析。
但纯粹的动态分析也有缺陷:程序在调试器中运行,有'町能产生不稳定的结果,
甚至有可能导致计算机的系统崩溃。同时,动态分析不能分析整个程序的全貌,对整
个程序的结构分析不能得到令入满意的结果。
因此,我们采用了动态分析和静态分析结合的策略,在程序运行前先进行静态分
析,进行模块功能的划分,然后在此基础上进行动态调试。这样,我们既可以一直观清
晰的看到软件的结构,义可吼动态观察软件的行为,从而极大地提高了软件逆向分析的效率
Powered by Zoundry
相关文章推荐
- 软件的黑盒和白盒分析方法
- 软件的黑盒和白盒分析方法
- 【软件测试】白盒测试方法与黑盒测试方法的区别
- 软件的最低测试方法--黑盒測試與白盒測試
- 软件开发的方法-分析各种现有的隐喻(ZT)
- 昨天客户拿过来7G的oracle数据让分析,体会到了一些编写软件的方法....
- 论软件系统分析的方法和策略
- [原创]白盒测试与黑盒测试两类方法对比
- 银行软件测试工作量分析和评估方法(转)
- 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)
- 软件测试。。。 白盒和黑盒。。。
- SafeNet超越“黑盒”,推出行业首款白盒密码软件保护解决方案
- 评"软件工程项目管理:功能点分析方法与实践"
- 软件测试的两个方面:白盒、黑盒
- 黑盒测试方法二 (边界值分析)
- 软件缺陷分析方法-Gompertz分析
- 软件测试不再黑盒— Android测试工具threadingtest带来第二代白盒覆盖率技术
- 软件测试基础:黑盒测试,白盒测试及具体方法
- 【软件测试】白盒测试与黑盒测试的区别(不同)
- 软件测试--黑盒测试用例设计方法简略