标签: angr

8 篇文章

angr-doc 8: Remarks
备注 Remarks 恭喜你!如果你一直读到了这里(编者注:这个仅仅适用于我们真正地写完到目前为止所有的TODO)那你就已经学习了angr中用于开始进行二进制文件分析的所有的基本组成部分。 从根本上说,angr就是一个模拟器。它是一个带有对环境的许多考虑,高度可操作的并且非常与众不同的模拟器,对,但是在它的核心部分,你使用angr是为了提取某些成块…
angr-doc 7: Analyses
分析 Analyses angr的目标是使在二进制程序上执行有用的分析更加容易。到这个的最后,angr允许你以一种能够轻松地应用到任何项目的通用格式将分析代码打包。我们之后将介绍编写你自己的分析,但是思想是所有的分析出现在project.analyses(比如,project.analyses.CFGFast())下面,并且可以作为函数调用,返回分…
angr-doc 6: Execution Engines
执行引擎 Execution Engine 当你要求在angr中执行一步时,需要有什么东西实际执行这个步骤。angr使用一系列引擎(SimEngine类的子类)来模拟给定部分的代码对于一个输入状态的影响。angr的执行核心仅仅尝试队列中所有可用的引擎,使用第一个可以解决这步的引擎。下面是 默认引擎的列表,按照顺序是: 当上一步将我们带到一些无法继续…
angr-doc 5: Simulation Managers
模拟管理器 Simulation Managers 在angr中最重要的控制界面是模拟管理器,它允许你同时控制几组状态的符号执行,并使用搜索策略来探索程序的状态空间。在这里,你会学到如何使用它。 模拟管理器让你灵活地处理多种状态。状态按照“存储stash”来管理,你可以自由地步进,过滤,合并和到处查看。这能让你,比如,按照不同的速率步进两个不同的存…
angr-doc 4: Program State
程序状态 Programe State 到现在,我们为了展示angr操作的基本概念,只使用了angr的符号执行程序状态(SimState对象)最可能的方式。在这里,你会学到有关一个状态对象的结构和如何以各种有用的方式与它交互。 复习:读写内存和寄存器 Review: Reading and writing memory and registers …
angr-doc 3: Solver Engine
求解引擎 Solver Engine angr的能力不仅体现在它是一个模拟器上,也体现在它能够使用被称为符号变量的方式执行。我们可以说一个变量拥有一个符号,这个符号只要一个名字就能生效,而不是说一个变量拥有一个确实的数值。然后对符号变量执行算术操作就产生了由操作构成的树(在编译原理中它的术语是语法抽象树或者AST)。AST可以被翻译成能被一个SMT…
angr-doc 2: Loading a Binary
载入一个二进制文件 Loading a Binary 在上一章,我们初次尝试了angr的载入设施——你加载了/bin/true,并且在不加载共享资源库的同时再次加载了它。你也看到了像proj.loader等angr能做的事情。现在,我们将深入这些接口的细节,并且了解我们能通过它们获取到的信息。 装载器 The Loader 让我们加载example…
angr-doc 1: Top Level Interfaces
顶层接口 Top Level Interfaces 开始使用angr的第一步是将一个二进制文件加载到一个项目中。我们使用/bin/true为例。 >>> import angr >>> proj = angr.Project('/bin/true') 在angr中,我们通过项目控制一切。你可以使用项目在你…