软件的黑盒和白盒分析方法


软件的黑盒和白盒分析方法
在无法获得程序源代码文件的情况下,町以通过黑盒分析和白盒分析的方法来分
析一个可执行程序。黑盒分析不能深入可执行程序的内部结构,仪通过分析程序的输
入和输…来推断其内部工作原理和流程。而白盒分析则是通过软件逆向分析,对可执
行程序反}L编,通过研究程序的汇编代码来确定其工怍原理和流程。
传统的黑盒分析技术相对'm言容易实施,而且可以快速了解软件的大致工作流
程。


仅凭传统的黑盒分
析方法难以准确地了解软件的工作过程以及所使用的秘密信息。


采用白盒分析技术,通过仔细地阅读程序的汇编代码,分
析软件的每一个操作,从而获得软件的整体工作流程以及所使用的各种秘密信息。但
是白盒分析也有其弱点,即容易陷入细枝末节,难以对软件的工作流程建立1个清晰
和直观的印象。凼此我们采用黑盒分析和白盒分析相结合的策略,通过两者的优势互
补,高效而准确地分析软件。
在软件的白盒分析中,主要是对软件的二进制代码进行分析,这其中
也包含两种不同的分析技术,

静态分析技术
动态分析技术


。所谓静态分析,是指不
运行软件,而仅仅观察软件的,_进制代码而进行的分析,这种分析不涉及软件在运行
过程中可能从外界获取的数据,仅仅是做逻辑上的判断。


静态分析的最大优点,是对
没有运行起来的软件的-进制代码进行扫描,得到其中的函数调用关系,划分出功能
模块,并通过一定的手段分析出部分数据结构,再结合手工分析,从而得到软件的一
个整体架构图。但由于软件并不是一个静态的实体,它的行为相逻辑流程还要依赖于
程序的输入输出和外界控制,因此,在静态分析中我们在得不到数据的情况下,对软
件的行为进行精确判断,在多数情况下是困难的。此外,由于涉及到操作系统的系统
调用和外部的库文件调用,程序代码中不可能实现所有的功能,我们还需要观察其调
用外部函数的行为,然而仅凭静态分析难以得出外部函数执行的结果[zl。


动态分析技术正是为了弥补静态分析的不足之处而产生的调试技术,这种分析使
用调试器运行待分析的程序,通过单步跟踪和设置断点,并观察程序运行过程中内存
和寄存器等的数据变化情况,研究程序的具体行为。动态分析技术具有以'优势:
(l)借助CPU执行指令的准确性,确保了程序运行的流程,不会因为人工分析的
错误而把程序的功能逻辑判断错误。
(2)可以在较高层而上抽象分析,即对于某砦函数调用,并不需要分析其具体实现,
而只需要令其执行并观察执行前后数槲结果变化即町。
(3)在执行期问根据需要更改程序的数据甚至指令,以实现更高效的分析。
但纯粹的动态分析也有缺陷:程序在调试器中运行,有'町能产生不稳定的结果,
甚至有可能导致计算机的系统崩溃。同时,动态分析不能分析整个程序的全貌,对整
个程序的结构分析不能得到令入满意的结果。
因此,我们采用了动态分析和静态分析结合的策略,在程序运行前先进行静态分
析,进行模块功能的划分,然后在此基础上进行动态调试。这样,我们既可以一直观清
晰的看到软件的结构,义可吼动态观察软件的行为,从而极大地提高了软件逆向分析的效率



Powered by Zoundry

posted @ 2011-03-28 10:31  attilaxAti  阅读(41)  评论(0编辑  收藏  举报