9.28_Data structure

1、循环队列

  1. 队列初始化:front和rear的值都是零。
  2. 判断循环队列为空或满:通常使用两种方式
  3. 方法一:多增加一个标识参数tag
    • 若tag==0。&&,rear== front 那么,为空。
    • 若tag==1。&&,rear== front 那么,为满。
    • 循环队列入队:
      • 将值存入rear所代表的位置。
      • rear = (rear + 1) % MAX
      • tag=1
    • 循环队列出队:
      • 取出front所代表位置的值。
      • front = (front + 1) % MAX。
      • tag=0
  4. 方法二:少用一个元素空间
    • 若队尾指针在队头指针的前一个位置,为满

2、串

  1. 子串的位置:第一次在主串中出现时,子串首字符的位置
  2. 串相等:①长度相等②对应位置元素相等
  3. 模式匹配:给定一个子串,要求在某个字符串中找出与该子串相同的所有子串
    • 例如:KMP算法

9.28_网络攻防

1、恶意软件分析技术

  • 静态分析(Static Analysis) ——分析代码,无需执行程序
    • 反汇编
    • 反编译
    • 程序切片
    • 控制流分析
    • 数据流分析
    • 字符串分析
  • 动态分析(Dynamic Analysis) ——程序运行时分析
    • 程序调试(Debug)
    • API Hooking
    • 代码插桩
    • 污点分析
    • 符号执行
    • 系统调用分析

2、基于Signature的恶意软件检测

  • 采用MD5算法生成文件标签
    • 方法:
      • 读取文件十六进制
      • 提取MD5文件标签
    • 特点:速度快,结果准确,只对已经收录的恶意软件有效,无法检测恶意软件变种

3、基于字符串的恶意软件检测

  • 现实依据:代码复用滥用导致Malware Variants具有共同的代码片段
  • 检测方法:计算Malware Variants的byte(op)-code公共子序列
  • 不足:
    • 计算(最长)公共子序列的速度慢
    • 泛化能力不足,并非所有Malware Variants都存在“公共子序列”

4、基于API的恶意软件检测

  • 现实依据:Malware Variants具有相似功能导致其API相似
  • 检测方法:分析Malware中重要的API概率分布

Tags

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注