본문 바로가기
Rev/Info

Python3 Angr Install & How to use

by zooonique 2021. 1. 4.
반응형

Angr 문제를 접하고 푸는 도중에 기존에 알고있던 Angr과는 조금 바뀐 부분이 있어서 이에 대한 내용을 메모합니다.

 

일단 Angr을 설치하는데, Python3 환경에서 설치하여 구동한다.

 

참고한 블로그에 따르면, Python3의 가상환경을 생성하고 그 위에 설치한다.

 

그 이유는 angr의 모듈도 z3의 Solver를 이용하면서 동시에 설치하면 서로의 영역에 침범해서 모듈을 사용할 수 없다고 한다.

 

아래와 같은 순서대로 설치를 진행한다.

 

  1. sudo apt install python3
  2. sudo apt install python3-pip
  3. sudo apt install git 
  4. sudo apt-get install virtualenvwrapper python2.7-dev build-essential libxml2-dev libxslt1-dev git libffi-dev cmake libreadline-dev libtool debootstrap debian-archive-keyring libglib2.0-dev libpixman-1-dev libqt4-dev graphviz-dev binutils-multiarch nasm libc6:i386 libgcc1:i386 libstdc++6:i386 libtinfo5:i386 zlib1g:i386
  5. vi ~/.bashrc (그냥 맨 윗줄에)
    • mkdir ~/.environments
    • source $(find / -name virtualenvwrapper.sh 2>/dev/null)
  6. source ~/.bashrc
  7. mkvirtualenv angr
  8. pip3 install angr
  9. git clone https://github.com/angr/angr-dev.git
  10.  cd angr-dev
  11. ./setup.sh -i -e angr

나는 위 과정을 다 거쳤는데, 에러가 나왔다.

 

그래서 pip3를 최신버전으로 업데이트하고, pip3 install angr과 같은 명령을 몇번 반복하니 angr이 제대로 설치되었다.

 


[사용법]

 

  • Project
    • [변수이름] = angr.Project('[파일이름]')
  • 기본속성
    • 아키텍처 : [변수이름].arch
    • 엔트리포인트 : [변수이름].entry
    • 파일이름 : [변수이름].filename
  • Loader : 가상 주소 공간을 다루기위해 CLE라는 모듈을 사용한다. 로더로 불리고, 'loader'속성으로 사용한다.
    • [변수이름].loader
  • Factory
    • State=[변수이름].factory.full_init_state(args=['파일이름'], add_option=angr.unicorn,stdin=flag,)

      unicorn옵션은 계산 속도 향상
    • SM=[변수이름].factory.simulation_manager(State) : 상태 객체를 인자로 받아간다.

      SM.run()으로 실행시키거나 SM.active(step활용)으로 시뮬레이션을 활성화 할 수 있다.
  • Solver
    • state.solver.BVV(0xFFFF,32) : 32비트 길이의 0xFFFF를 가지는 비트 벡터 생성
    • state.solver.eval(변수) : eval함수를 활용하여 파이썬 정수로 변환 
    • state.solver.is_true() vs state.solver.is_flase() 로 참 거짓 판단
    • state.solver.add(조건)
    • state.solver.FPV(3.14,state.solver.fp.FSORT_DOUBLE)
  • Stash
    • active
    • deadended
    • pruned
    • unsat
    • unconstrained

 

 

 

출처 : ccurity.tistory.com/261, hyeonbell.tistory.com/169

 

반응형

'Rev > Info' 카테고리의 다른 글

[Malware] Formbook  (0) 2021.12.27
[Excel] Very hidden Sheet VBA Macro  (0) 2021.12.27
IDA Plugin 개발 - 1  (0) 2021.06.24
Decompilation failure - positive sp value has been found  (0) 2021.01.13
RecStudio - Decompile [MIPS]  (0) 2019.10.28