zoukankan      html  css  js  c++  java
  • 软件的黑盒和白盒分析方法


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


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


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

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


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


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


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



    Powered by Zoundry

  • 相关阅读:
    [LEETCODE] 初级算法/数组 1.1删除排序数组中的重复项
    [LeetCode]1.Two Sum 两数之和&&第一次刷题感想
    Panda的学习之路(3)——pandas 设置特定的值&处理没有数据的部分
    Panda的学习之路(2)——pandas选择数据
    Panda的学习之路(1)——series 和 Dataframe
    NUMPY的学习之路(2)——索引,合并,分割,赋值
    numpy的学习之路(1)——创建数组以及基本运算
    SpringBoot外部配置夹加载顺序
    SpringBoot2.0官方文档的位置
    @RestController注解
  • 原文地址:https://www.cnblogs.com/attilax/p/15200055.html
Copyright © 2011-2022 走看看