9.28_Data structure
1、循环队列

- 队列初始化:front和rear的值都是零。
- 判断循环队列为空或满:通常使用两种方式
- 方法一:多增加一个标识参数tag
- 若tag==0。&&,rear== front 那么,为空。
- 若tag==1。&&,rear== front 那么,为满。
- 循环队列入队:
- 将值存入rear所代表的位置。
- rear = (rear + 1) % MAX
- tag=1
- 循环队列出队:
- 取出front所代表位置的值。
- front = (front + 1) % MAX。
- tag=0
- 方法二:少用一个元素空间
- 若队尾指针在队头指针的前一个位置,为满
2、串
- 子串的位置:第一次在主串中出现时,子串首字符的位置
- 串相等:①长度相等②对应位置元素相等
- ※模式匹配:给定一个子串,要求在某个字符串中找出与该子串相同的所有子串
- 例如: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概率分布
No responses yet