跳转至

Angr

angr

~~python3 的话版本要高于 3.6,这是 python2 的~~

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

export WORKON_HOME=~/Envs
mkdir -p $WORKON_HOME
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv angr

~~在这个虚拟环境里面安装 angr~~

~~pip install angr~~

~~这俩可能要单独安装一下~~

~~pip install gitdb2==2.0.6~~

~~pip install GitPython==2.1.14~~

1592618861848-f0e2771d-33b9-4292-8740-d624739ecb0f.png

~~进:mkvirtualenv angr ~~

~~退:deactivate~~

安装

直接用 docker 吧!

例子

想要用 angr 的话先要 import angr

p=angr.Project('文件名'),那以后再操作的时候就用 p 来表示了

init_state = p.factory.entry_state() 定义一个入口的状态

sm = p.factory.simulation_manager(init_state) 符号执行

sm.explore(find=0x8048678) 我们希望他能执行到这个地方

拿深思杯一道 PWN 题举个例子,他需要先逆向找出一个 key,才能继续,可以用 angr 找一下

1592882428796-ea8bd7f7-36fd-4178-97e9-c99d7f1bfb1d.png

exp

import angr
p = angr.Project("./pwn")
state = p.factory.entry_state()
sm = p.factory.simulation_manager(state)
res = sm.explore(find=0x08048817,avoid=0x0804882B)
print(res.found[0].posix.dumps(0))

原文: https://www.yuque.com/hxfqg9/bin/vprnxg