ANGR简介
发布日期:2021-05-14 08:36:40 浏览次数:22 分类:精选文章

本文共 2007 字,大约阅读时间需要 6 分钟。

∠Variables and Dynamic Symbol Resolution

angr是一个多架构的二进制分析平台,支持对二进制文件的动态符号执行和多种静态分析能力。在各类CTF竞赛中,angr展现出其强大的工具力。

∠Installation Guide: Surviving Dependencies

在Ubuntu系统中,首先需要安装编译所需的依赖环境:

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

为避免angr依赖覆盖官方共享库,建议在虚拟环境中安装:

mkvirtualenv angr sudo pip install angr

如果安装出现问题,可按顺序从angr官方仓库安装claripy、archinfo等项目。

∠Exploring binary Analysis with angr

使用angr的第一步是创建一个工程,所有操作都围绕该工程展开:

$> import angr

proj = angr.Project('/bin/true') WARNING: The main binary is a position-independent executable. It will be loaded with a base address of 0x400000.

通过proj可获取文件信息:

proj.filename # '/bin/true' proj.arch # archinfo.Arch对象 hex(proj.entry) # 0x401370

proj.loader帮助分析二进制文件中包含的对象文件等信息:

proj.loader.main_object # 主对象文件信息 proj.loader.shared_objects # 共享对象列表

Power of ang:Dynamic Symbol Resolution

_symbol resolution是angr的核心能力之一。ANGR通过符号执行技术,将程序的输出表示为符号表达式或数学表达式,并利用约束求解器进行求解。

Memory And Registers:

state = proj.factory.entry_state() state.regs # 寄存器名对象 state.mem # 内存操作

Registers和内存的读写:

$> state.mem[0x1000].long = state.solver.BVV(4, 64) $> state.mem[0x1000].long.resolved # 获取具体数值 $> state.mem[0x1000].long.concrete # 获取Python整数

Simulation Management

模拟管理器是angr最重要的接口。它允许对各个符号状态进行并排处理,还支持多种探索技术:

$> simgr = proj.factory.simgr(state) $> while len(simgr.active) == 1: simgr.step()

Deadends and Stashes

当程序无法继续执行时,状态会被放入deadended stash。推荐使用模拟管理器进行操作:

$> simgr.move(from_stash='deadended', to_stash='more_then_50', filter_func=lambda s: '100' in s.posix.dumps(1))

Exploring

了解程序的执行路径,查看Control-Flow Graph(CFG),以判断程序控制流:

$> cfg = proj.analyses.CFGFast() $> entry_node = cfg.get_any_node(proj.entry) $> len(cfg.graph.successors(entry_node))

# 控制流图中出口数量

VEX Intermediate Representation

VEX是angr的中间表示,它将机器码转换为VEX IR。在angr中,可以通过PyVEX库进行处理:

$> import pyvex

bb = pyvex.IRSB('\xc3', 0x400400, archinfo.ArchAMD64()) bb.statements[3].data # 获取单个指令

Advanced Uses

在angr之上开发工具:

  • ROP链自动化生成器
  • 二进制文件自动化修补引擎
  • Next-gen符号执行增强fuzzer
  • 自动化漏洞利用引擎
  • Reference Information 更多技术细节请参考官方文档和社区资源。

    上一篇:符号执行简介
    下一篇:Linux保护技术绕过小结

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年05月05日 06时18分27秒