文件名称:离线+面向中间代码的混合符号执行-基于matlab的一维条形码检测
文件大小:2.93MB
文件格式:PDF
更新时间:2024-06-27 13:51:34
逆向 漏洞 挖掘 安全
(1)在线混合符号执行 App Trace Generator Trace Symbolic Exe Engine (2)离线混合符号执行 App Trace Generator Trace Symbolic Exe Engine Translator (3)离线+面向中间代码的混合符号执行 图 3.2: 混合符号执行模式 其次,在线符号执行大多基于二进制代码植入技术[110, 125]。符号执行的实 现非常复杂,植入代码中发生的微小异常都可能导致目标程序运行失败。进一步, 一旦目标程序采用了代码混淆 [61, 133, 108]等保护技术,都很容易导致混合符号 执行无法正常运行。 最后,目标程序执行过程中的并发(concurrency)和不可确定性事件 (nondeterminism)给在线混合符号执行带来重大挑战。在线混合符号执行很 容易破坏多线程/多进程软件原有的同步关系,给目标程序带来资源冲突甚至错 误。 采用离线符号执行模式可以有效缓解上述问题。离线符号执行指先记录程序 执行轨迹,在对轨迹重放过程中符号计算。一方面,与在线符号执行相比,记录 执行轨迹给目标程序执行带来的性能损失非常小;甚至在硬件虚拟化支持下,完 全可以在硬件层实现执行轨迹的记录[73]。另一方面,记录执行轨迹的功能实现 相对简单,给目标程序执行带来的影响有限,不会破坏多线程/多进程的同步关 系。而且,执行轨迹重放的计算完全可以在高性能计算平台(可以与目标程序运 行平台不一致)上实现,通过改善计算资源进而提高符号分析的性能。 在对指令解释层的选择上,SymReplayer采用面向中间代码的符号执行方式。 – 32 –