自动查找触发程序中特定代码路径所需的输入

逆向工程 艾达 开发
2021-07-09 04:52:43

假设我有以下场景:我在可执行文件 (DLL) 深处的特定函数中发现了一个漏洞。要执行该代码路径(在易受攻击的上下文中),我需要为程序提供非常具体的输入,这些输入取决于流程路径并在程序的不同阶段执行检查。

我正在寻找的是一些指导方针、书籍、我可以研究的材料,它们可以向我解释存在哪些方法以及如何到达那里。

感谢和问候, 丹尼尔

1个回答

使用SMT 求解器来完成查找到达特定执行流(或目标指令/功能)所需输入的一种常用方法

SMT 求解器是接受一组符号、潜在冲突条件和它们之间的一组定义操作以及所需结果/目标的程序。SMT 求解器将尝试在定义的域空间中为给定的约束提供“解决方案”。

如前所述,这个话题与 当然还有象征性的处决。这也是 SMT 求解器(和类似技术/方法)在安全行业中使用的主要背景。业内人士也花了很多时间,即Rolf Rolles

安全行业社区中有一些常用的 SMT 求解器(我知道):

  1. 微软的Z3是众所周知的。
  2. 特里顿是另一个。
  3. angr是一个专注于将装配提升到 IR 和解决约束的库。

此外,还有一堆在求解每吨超过wiki页面