-
基于Matlab的一维条形码检测方法,采用离线与面向中间代码的混合符号执行技术
资源介绍
(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 –