从零开始配置Ubuntu20.04 amd64 virtualenvwarapper angr环境 并做ais3_crackme的CFG图

一.首先安装虚拟机ubuntu20.04

在VirtualBOX安装ubuntu20.04(amd64,这里最好用amd64版的linux),并安装增强功能。

并更换下载源为阿里云(在settings->about->software update) <--------------解决Unable to locate package 的问题。

磁盘分配要大些,比如64/128GB

参考 https://blog.csdn.net/qq_36340642/article/details/109253664

二.配置virtualenvwarapper

2.1 安装pip、git

可以通过apt安装。

2.2 安装virtualenv

2.2.1

首先pip install virtualenv,然后尝试新建虚拟环境  virtualenv venv1.

若报错

ModuleNotFoundError: No module named 'virtualenv.seed.embed.via_app_data'

则python3 -m pip uninstall virtualenv,然后sudo apt-get install python3-virtualenv。此处参考https://www.jianshu.com/p/4f215dfc11fb

之后可以尝试下生成一个虚拟环境。最好为所有虚拟环境先建一个文件夹,便于管理。

mkdir venv
cd venv
virtualenv venv1
source venv1/bin/activate 

 2.2.2

并修改python为python3

通过更改/usr/bin/python的指向就能实现更改python默认版本,由于软链接文件不支持修改,所以先删除,再重新指向。

删除python软链接文件: rm -rf python

重新创建新指向 python:ln -s /usr/bin/python3 python、

root@jack-virtual-machine:/usr/bin#
root@jack-virtual-machine:/usr/bin# rm -rf python
root@jack-virtual-machine:/usr/bin# python --version
bash: /usr/bin/python: 没有那个文件或目录
root@jack-virtual-machine:/usr/bin# ln -s /usr/bin/python3 python
root@jack-virtual-machine:/usr/bin#

2.3 安装virtualenvwrapper并修改bashsrc

pip install virtualenvwrapper

之后在~/.bashrc写入以下内容。(~/.bashrc在home下,可以按ctrl+H显示)

export WORKON_HOME=$HOME/.virtualenvs
source ~/.local/bin/virtualenvwrapper.sh

这里的文件位置可能需要根据具体位置更改。

然后

source ~/.bashrc    #读入配置文件,立即生效

然后在terminal 运行virtualenvwrapper。这里最好还是先新建一个文件夹,便于管理。

mkdir venvdir
cd venvdir

创建虚拟环境
mkvirtualenv venv   
查看当前的虚拟环境目录
workon
py2
py3
切换到虚拟环境
workon py3
退出虚拟环境
deactivate
删除虚拟环境
rmvirtualenv venv

参考 https://www.cnblogs.com/cwp-bg/p/python.html

三.在虚拟环境安装angr

使用virtualenvwrapper创建环境angrvenv,然后安装angr

workon angr。

pip install angr

//安装angr-utils
git clone https://github.com/axt/bingraphvis
pip install -e ./bingraphvis
git clone https://github.com/axt/angr-utils
pip install -e ./angr-utils

python import angr成功,说明安装成功。

可能有error,比如某个库networkx需要xxx的版本在4.3-5.0之间,那么pip install xxx==4.4.0 即可

参考 https://blog.csdn.net/z2664836046/article/details/97683626 https://blog.csdn.net/weixin_45055269/article/details/105176185

四.生成样例二进制程序ais3.crackme的CFG图(控制流图)

文件在 https://github.com/axt/angr-utils。

sudo apt-get install graphviz

不然会报错 FileNotFoundError: [Errno 2] "dot" not found in path.

然后python代码

import angr
from angrutils import *
proj = angr.Project("<...>/ais3_crackme", load_options={'auto_load_libs':False})
main = proj.loader.main_object.get_symbol("main")
start_state = proj.factory.blank_state(addr=main.rebased_addr)
cfg = proj.analyses.CFGEmulated(fail_fast=True, starts=[main.rebased_addr], initial_state=start_state)
plot_cfg(cfg, "ais3_cfg", asminst=True, remove_imports=True, remove_path_terminator=True)  

运行即可。

还可以参考官方文档,做些程序入口识别之类的事。https://docs.angr.io/

五.angr的学习资料

https://github.com/axt/angr-utils

https://github.com/angr/angr

http://angr.io/api-doc/angr.html?highlight=cfg#module-angr.analysis

https://docs.angr.io/built-in-analyses/cfg

原文地址:https://www.cnblogs.com/lqerio/p/15021158.html