文件名称:讨论畸形-基于matlab的一维条形码检测
文件大小:2.93MB
文件格式:PDF
更新时间:2024-06-27 13:51:36
逆向 漏洞 挖掘 安全
北京大学博士学位论文 第四章 校验和感知的模糊测试技术 较操作。例如,x86提供rep cmpxx系列指令,支持对不同内存区域逐一比较。高 级编译器会充分利用底层指令的优势对目标程序进行优化。rep指令本身具有循 环功能,但仅对应一条指令。TaintScope能有效定位和绕过这类校验和检查实现 方式。 4.6.3 二进制修改和模糊测试 在这个阶段,TaintScope修改原始程序,在校验和检测点引入直接跳转,强 制程序接受任何数据,从而绕过数据完整性检测。 如果目标程序处理正常样本时,校验和检查点一直发生跳转,意味着跳转 目标处继续处理样本,TaintScope将该指令替换为直接跳转指令。例如,校验 和判断后的条件跳转指令为“jcc NormalExecution”类型,TaintScope把该指令 修改为“jmp NormalExecution”类型。这里jcc代表x86指令集中的条件跳转指令, jmp是x86指令集中的直接跳转指令。 如果目标程序处理正常样本时,校验和检查点一直不发生跳转,意味跳转指 令的下一条指令将会继续处理样本,TaintScope将该条件跳转指令替换为等长的 空操作指令。例如,假设校验和判断后的条件跳转指令为“jcc checksumErr”类 型,TaintScope直接用等长的nop指令替换这个跳转指令。 修改后的二进制程序不会检测数据的完整性,因此,所有输入都会“通过”校 验和检查,能够对校验和检测点之后的代码进行测试。本文将在第五章讨论畸形 数据生成方式。 4.6.4 校验和域自动修复技术 如果模糊测试过程中,某个畸形数据导致修改后的程序发生崩溃,但却无法 导致原始程序崩溃,通常是由于这个畸形数据无法通过原始程序中校验和检测。 本文基于混合符号执行技术(见第三章),修复畸形数据的校验和域。 给定一个导致修改后程序崩溃的畸形数据,TaintScope首先记录原始程序处 理该数据的执行轨迹,然后对执行轨迹重放,把畸形数据中校验和域部分作为符 号值,收集执行轨迹上对这些符号值的约束;待重放至校验和检测点时(畸形数 – 57 –