面向二进制程序的混合符号执行技术-基于matlab的一维条形码检测

时间:2024-06-27 13:51:34
【文件属性】:

文件名称:面向二进制程序的混合符号执行技术-基于matlab的一维条形码检测

文件大小:2.93MB

文件格式:PDF

更新时间:2024-06-27 13:51:34

逆向 漏洞 挖掘 安全

北京大学博士学位论文 第三章 面向二进制程序的混合符号执行技术 • 实际程序实现过程中,代码会依赖大量系统API或第三方库函数,由于没有 源代码,符号执行无法模拟执行这些调用,而这些系统API或第三方库函数 很有可能对程序执行产生很大影响,改变程序原有数据约束关系; • 符号执行可以对标量数据单元(如整型变量)精确建模,但是处理矢量数 据单元(比如数组、字符串)面临巨大挑战。比如,在数组元素赋值时,如 果以符号变量作为索引,符号执行无法判断具体对哪个数组元素的赋值; strncpy(str2,str1,n)将字符串str1前n个字符拷贝到字符串str2中,但是 如果n是符号变量,分析算法不能确定具体拷贝多少字符,在引用str2字符 串时无法确定内容。 随着约束求解器和符号执行引擎的计算能力不断提高,特别是在Prefix [46]在2000年前后成功将符号执行技术应用在漏洞挖掘领域后,符号执行重新引 起了研究人员的关注。此时,研究人员不再追求挖掘技术的完备性或健全性,而 是追求挖掘方法的效率和效果,提出了很多缓解符号执行固有缺陷的策略,实现 了很多基于符号执行技术的漏洞检测工具 [172, 71]。 W. Bush等人在1998年提出了Prefix [46],并在美国申请了若干专利。微软公 司于1999年收购了Prefix,在Prefix基础上实现了Prefast。Prefix/Prefast已经成为 微软内部标准源代码静态检验工具之一。Prefix/Prefast首先分析源代码,将其转 换成抽象的语法树;然后对过程依照调用关系进行拓扑排序,再为每个过程生成 相应的抽象模型,最后静态模拟执行路径并用约束求解的方法对约束集合进行检 验。 Prefix/Prefast实现了过程间(inter-procedural)的符号执行;在模拟执行时, Prefix可以有效检测指针变量使用相关的漏洞,如未初始化指针引用、无效指针 和空指针解引用(dereference);路径结束时,Prefix检测路径上是否存在资源泄露 等漏洞,如内存泄露,未释放的文件句柄等。为避免路径爆炸,Prefix在每个函数 内部最多只检查50条路径;在所有路径结束后,Prefix合并所有路径的结果,建 立函数的摘要,再次调用该函数时可直接应用已构建摘要,加速模拟。函数抽象 模型的提取决定了Prefix/Prefast查错的能力和精度。 – 27 –


网友评论