angr 설치
angr는 파이썬 기반 환경에서 작동하므로 Python3가 설치되어 있어야 합니다. python2는 지원하지 않습니다.
Angr의 사용에 있어서 파이썬 가상환경(python virtual environment)사용을 극히 권장합니다. angr가 의존성을 지니고 있는 z3, pyvex들이 원본에서 포크된 라이브러리들의 네이티브 코드들을 필요로 하기때문에 libz3나 libVEX가 설치되어 있다면 angr가 이 프로그램들을 덮어쓸 수도 있습니다. 가상환경 밖에서 angr를 설치하여 동작시키다 발생한 문제에 대해서는 책임지지 않습니다.
의존성
python의 의존성은 pip나 setup.py 스크립트에 의해 다뤄집니다. 그러나 설치를 완료하기 위해서는 약간의 C언어 빌드가 필요할 수 있습니다. 따라서 python development headers뿐만이 아니라 안정적인 빌드 환경이 필요합니다. 의존성 설치 프로세스중 python라이브러리인 cffi를 설치를 하였어도, 운영체제의 libffi 패키지를 설치하지 않으면 작동이 되지 않습니다.
우분투에서는 아래 명령어를 작성하십시요.
1
|
sudo apt-get install python3-dev libffi-dev build-essential virtualenvwrapper
|
cs |
만약 angr관리를 시도한다면, PySide2가 필요할 것입니다.
대부분의 시스템, 모든 *nix 시스템들
1
|
mkvirtualenv --python=$(which python3) angr && pip install angr
|
cs |
대부분의 상황에서 angr를 설치하기 위해선 충분한 명령어입니다.
Fish(shell) 유저들은 virtualfish나 virtualenv 패키지 또한 사용할 수 있습니다.
1
|
vf new angr && vf activate angr && pip install angr
|
cs |
실패한다면, 아래 repositories 설치를 통해 angr설치를 할 수 있습니다.
MAC/ Windows는 건너뛰겠습니다.(개인적으로 불필요)
개발환경 설치
angr-dev라는 레포지토리를 사용한다면, angr개발에 있어 더욱 편리할 것입니다. 아래 명령어를 통해 angr development mode를 설치할 수 있습니다.
1
2
3
|
git clone https://github.com/angr/angr-dev
cd angr-dev
./setup.sh -i -e angr
|
cs |
이것은 새로운 virtualenv를 만드는 코드입니다.(-e angr), 그리고 당신이 필요할 의존성을 확인합니다.(-i), 모든 저장소를 복사하고 수정가능한 모드로 그것들을 복사합니다. setup.sh은 또한 pypy virtualenv를 만들 수 있습니다.(-e를 -p로 바꾸면), 이 수행을 통해 더 빠른 퍼포먼스와 적은 공간복잡도를 차지합니다.
당신은 장소에 따라 다양한 모듈들을 수정/리컴파일/분화할 수 있습니다. 그리고 그것은 당신의 가상 환경에 맞춰 자동으로 반영될 것입니다.
Docker 환경 설치
편의를 위해, 우리는 도커 99%를 보증하는 이미지를 올려 놨습니다. 당신은 docker를 통해 설치할 수 있습니다.
1
2
3
4
5
6
7
8
|
# install docker
curl -sSL https://get.docker.com/ | sudo sh
# pull the docker image
sudo docker pull angr/angr
# run it
sudo docker run -it angr/angr
|
cs |
도커 안밖에서의 파일의 동기화는 사용자를 위한 연습으로 남겨 놨습니다. (힌트: docker run -v)
angr컨테이너 수정
아마도 apt를 통해 추가적인 패키지 설치가 필요할 수도 있을겁니다. 컨테이너의 바닐라 버전은 sudo package install을 지원하지 않습니다. 그리고 그것은 컨테이너의 통상 유저는 패키지 설치를 위한 권한 상승이 불가능합니다.
아래 명령어를 통해 권한 상승을 할 수 있습니다.
1
2
3
4
|
# assuming the docker container is running
# with the name "angr" and the instance is
# running in the background.
docker exec -ti -u root angr bash
|
cs |
트러블 슈팅
libgomp.so.1:version GOMP_4.0 not found, or other z3 issues
이 특정한 에러는 libz3.so의 pre-compiled version과 libgomp의 설치된 버전의 불공존성을 의미합니다. Z3컴파일러는 필요합니다. 당신은 이 명령어를 통해 피해갈 수 있습니다.
1
2
|
pip install -I --no-binary z3-solver z3-solver
|
cs |
No such file or directory: 'pyvex_c'
설마 12.04를 사용하시나요? 6년은 된 구닥다리 os는 집어 치우세요. 업그레이드는 꽁짜라고요;;
당신은 또한 pip를 업그레이드를 고려할 수 있습니다. 아마 이슈를 해결해 줄거에요.
1
|
python -m pip install -U pip
|
cs |
(기타 오류는 나중에 작성 예정 ㅈㅅ 시간이 없습니다.)
'Korean_Angr > Introductory Errata' 카테고리의 다른 글
[Angr 공식문서] Angr 기여 방법 (0) | 2019.11.03 |
---|