zoukankan      html  css  js  c++  java
  • Angr包含什么

    angr是什么

    angr是一个多架构的二进制分析平台,具备对二进制文件的动态符号执行能力(例如Mayhem,KLEE等)和多种静态分析能力。

    大概看来,要做到这些必须要克服一些问题:

    • 装载二进制文件到到分析平台
    • 转换二进制文件为中间语言(intermediate representation)(IR)
    • 转换IR为语义描述(即它做什么而不是它是什么)
    • 执行真正的分析,这包括:
      • 部分或者全部的静态分析(即依赖分析,程序分片)
      • 对程序状态空间的符号探索(比如“我们能否一直执行它直到我们找到了一个溢出?”)
      • 对上述的情况的一些混合(比如“让我们执行一部分可导致内存写的内存切片,来发现一个溢出”)

    angr拥有的组件能满足所有这些挑战。 这本书将会向你解释每一个组件是如何工作的,以及如何使用它们来完成你的邪恶目标(原文:accomplish your evil goals)。

    装载二进制程序

    angr安装完成后,你就可以装载二进制程序进行分析了。这个过程以及支持它的angr组件CLE的详细描述在这里

    中间语言(Intermediate Representation)

    angr使用中间语言(具体来说,VEX)在不同的架构上分析二进制文件。关于IR的详细说明在这里

    求解引擎(Solver Engine)

    angr的子模块Claripy解决约束求解和一些其它计算性的需求。大多数的angr使用者不需要知道Claripy的任何事,但我们仍然提供文档以防万一。其详细说明可以看这里

    程序状态(Program States)

    angr提供模拟的程序状态的接口。理解它是成功使用angr的关键。详细说明可以看这里

    程序路径(Program Paths)

    程序可以通过其所有可能的执行路径来分析。angr会揭露关于路径如何被执行的信息。这一节给出了如何使用angr这一能力的总览。

    语义表达(Semantic Representation)

    angr的一个强大的能力就是通过基本块对于程序状态的影响来描述它们。换句话说,angr可以推断出基本块做什么,而不仅仅是它们是什么。这通过SimuVEX模块来完成,详细描述可以看这里

    符号执行(Symbolic Execution)

    angr提供了强大的符号执行引擎。这个引擎的接口以及使用方法在这里

    完整的程序分析

    上面描述的所有模块组合起来使得angr可以进行复杂的、完全的程序分析。关于进行和记录分析的机制的详细说明可以看这里

    例子

    我们准备了一些使用angr的例子!你可以在这里找到它们。

  • 相关阅读:
    oracle调用存储过程和函数返回结果集
    怎样让Oracle的存储过程返回结果集
    Java 调用存储过程 返回结果集
    oracle多表关联删除数据表记录方法
    ORACLE多表关联UPDATE 语句
    Oracle--用户管理与权限分配
    java代码开启关闭线程(nginx)
    netty实现websocket客户端(附:测试服务端代码)
    netty同时实现http与socket
    Oracle-控制语句
  • 原文地址:https://www.cnblogs.com/0xHack/p/11581765.html
Copyright © 2011-2022 走看看