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~~
~~进: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 找一下
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))