python动态源代码模糊——python中动态模糊的实现。(研究软件)
PyDySoFu的Python项目详细描述
pydysof-python动态源代码模糊器
用于在运行时模糊python函数的库。
贡献者
汤姆沃利斯
格拉斯哥大学计算科学学院
Github ID:可能是 twallisgm@googlemail.comtim storer
格拉斯哥大学计算科学学院
github id:twsswt timothy.storer@glagow.ac.uk
概述
Pydysofu是一个库,用于在运行时执行Python程序的源代码模糊化。模糊操作是 在可扩展的模糊器库中实现。模糊器可以通过两种方式应用于函数:
- 通过构造一个面向方面的编程,比如advice dictionary,将函数指针映射到fuzzer (推荐)。
- 通过使用
@fuzz
装饰器装饰模糊操作,并使用所需的模糊器参数化。
首选AOP方法,因为这将引用函数的实现和 fuzzers的规范,允许构造同一程序的许多不同的fuzzing。
每个fuzzing操作符都是一个函数,它接受工作流函数的主体(作为语句列表)并返回 模糊的陈述清单
应用程序
Pydysofu最初是作为一种模糊工具开发的,用于模拟社会技术系统中的偶然行为。 但是,还有许多其他可能的应用:
- 在分布式系统测试中模拟拜占庭式的中断。
- 分布式系统中复杂行为的模拟。
- 类人计算中易出错的行为。
- 模拟由于突发复杂性而不适合于随机分析的物理系统。
可用的模糊器
核心库包括原子和复合模糊器,用于构建更复杂的行为:
- 身份
- 使用过滤器将模糊器应用于函数体步骤的子集。提供的过滤器包括:
- 身份
- 随机选择
- n最后步骤
- 不包括控制结构
- 反转选择
- 删除步骤
- 更换步骤
- 复制步骤
- 插入额外步骤
- 洗牌步骤
- 应用一系列模糊算子
- 从概率分布中选择一个随机模糊算子。
- 有条件地应用fuzz运算符。
- 替换foreach循环的iterable
- 替换条件表达式
- 递归到组合步骤中
- 交换if块
还提供了一些演示模糊器,用于组合上述核心模糊器:
- 删除最后一步
- 复制最后一步
- 删除随机步骤
教程和示例
- 有一个jupyter笔记本教程./tutorial.ipynb。