美文网首页
学习与使用angr

学习与使用angr

作者: 静析机言 | 来源:发表于2020-11-27 11:57 被阅读0次

一、什么是angr?

angr 是一个功能强大的二进制程序分析框架,可用于程序的静态分析和动态符号执行。支持 x86、ARM、MIPS 和 PPC 架构中 32 bit 和 64 bit 可执行程序的分析。

二、安装angr

前提条件:要python3.6以上版本,因为python2.7的版本,angr已经不支持了。

1. 安装基本开发环境

sudo apt-get install python-dev libffi-dev build-essential

2. 安装、配置 virtualenvwrapper

virtualenv 是一个可以在同一台计算机中隔离多个 Python 环境的工具。它能够用于创建独立的 Python 环境,使得多个 Python 环境互不影响。virtualenvwrapper 是 virtualenv 的扩展管理包,可以更方便地管理虚拟环境。

sudo pip install virtualenvwrapper

我的环境有点特殊,之前装过pyenv,用来切换各版本的python。因此virtualenvwrapper.sh不在缺省位置:/usr/local/bin/virtualenvwrapper.sh,而在/root/.pyenv/versions/3.8.0/bin/virtualenvwrapper.sh下。

打开virtualenvwrapper.sh,写入

export WORKON_HOME=$HOME/Virtualenv

执行source /root/.pyenv/versions/3.8.0/bin/virtualenvwrapper.sh

打开开机配置文件

sudo gedit ~/.bashrc

写入

source /root/.pyenv/versions/3.8.0/bin/virtualenvwrapper.sh

每次开机时都会初始化,使得angr环境可以直接建立

3. virtualenvwrapper操作命令

创建环境

mkvirtualenv env1

mkvirtualenv env2

环境创建之后,会自动进入该目录,并激活该环境。

切换环境

workon env1

workon env2

列出已有环境

workon

退出环境

deactivate

删除环境

rmvirtualenv

4. 安装angr

mkvirtualenv angr

pip install angr

三、使用angr

以https://github.com/jakespringer/angr_ctf 的第2题02_angr_find_condition为例,说明怎样使用angr。

编写脚本02.py

import angr

import sys

def main(argv):

  bin_path = argv[1]

  project = angr.Project(bin_path)

  initial_state = project.factory.entry_state()

  sm = project.factory.simgr(initial_state)

  def is_successful(state):

    return b'Good Job' in state.posix.dumps(1)  # :boolean

  def should_abort(state):

    return b'Try again' in state.posix.dumps(1) # :boolean

  sm.explore(find=is_successful, avoid=should_abort)

  if sm.found:

    solution_state = sm.found[0]

    print(solution_state.posix.dumps(0))

  else:

    raise Exception('Could not find the solution')

if __name__ == '__main__':

  main(sys.argv)

切换到angr环境

workon angr

执行脚本02.py,跑出结果HETOBRCU

python 02.py 02_angr_find_condition

验证结果,输入HETOBRCU果然出现Good Job.的提示

相关文章

  • 学习与使用angr

    一、什么是angr? angr 是一个功能强大的二进制程序分析框架,可用于程序的静态分析和动态符号执行。支持 x8...

  • angr 文档翻译(1-1)

    angr 文档翻译(1-1):简介以及核心概念 什么是Angr?我如何使用它? angr 是一个支持多处理器架构的...

  • angr 文档翻译(4):机器状态——内存,寄存器等

    angr 文档翻译(4):机器状态——内存,寄存器等 到目前为止,我们只在最基础的层次上使用angr模拟的程序状态...

  • angr 文档翻译(1-7):分析

    分析 angr的目标是使得对二进制程序的分析更加简单。学习至此,angr允许你将分析代码打包为一个通用的格式,以便...

  • Angr

    Angr 基本介绍 angr 来源于CGC项目,最初用于自动攻防。 平台无关(platform-agnostic)...

  • 最基本的angr的使用法技巧:

    angr也叫符号执行暴力破解。 打开python,输入下面的指令:import angrproj = angr....

  • 野兽的呼唤~16

    Francois was surprised too, and guessed why Buck was angr...

  • angr文档摘要1———Symbolic Expressions

    angr文档摘要1———Symbolic Expressions and COnstraint Solving 几...

  • art of speaking

    speak things others like to hear with those possible angr...

  • Habit

    Is there any driving habit that you have? Do you get angr...

网友评论

      本文标题:学习与使用angr

      本文链接:https://www.haomeiwen.com/subject/njcxwktx.html