我发现可执行文件(DLL)内的特定功能存在漏洞。为了使代码路径得以执行(在易受攻击的上下文中),我需要为程序提供非常具体的输入,具体取决于流路径并在程序的不同阶段进行了检查。我正在寻找可以研究的一些准则,书籍和材料,这些材料可以向我解释现有的方法以及如何实现这些方法。
#1 楼
使用SMT求解器可以找到一种找到所需输入以达到特定执行流程(或目标指令/功能)的常用方法。条件以及它们之间的一组定义的操作,以及所需的结果/目标。 SMT求解器将尝试在定义的域空间中为给定的约束提供“解决方案”。如上所述,这个主题当然与模糊测试和符号执行紧密相关。这也是在安全行业中使用SMT求解器(和类似技术/方法)的主要环境。行业中的情侣们也花了很多时间在此上,即Rolf Rolles。 ):Microsoft的Z3是一个广为人知的工具。Triton是另一个。
angr是一个致力于将装配提升到IR并解决约束的库。
另外,还有一堆维基页面上的求解器。
评论
真好这可能是相关的:deniable.org/reversing/symbolic-execution
– julian♦
18年6月8日在2:27
谢谢你们俩!这正是我在寻找的信息!
– stacklikemind
18年6月8日在8:23
评论
当您说“我需要为程序提供非常具体的输出”时,您的意思是真的非常具体的输入吗?换句话说,程序的特定输入是否导致易受攻击的函数被调用?@SYS_V我认为OP正在要求一种方法来获取所需的输入,以便程序可以访问易受攻击的功能。
@NirIzr这听起来与我有关。你怎么看?我试图了解这与逆向工程有何关系。
@SYS_V好吧,假设我是正确的,我发布了答案。 ¯\ _(ツ)_ /¯