Riscure/DROP-IDA-plugin

Dependency and documentation issues

hairlessbear opened this issue · 1 comments

I recently installed DROP and had a tough time getting everything configured properly due to various dependency/version issues. I'm assuming this repo isn't monitored, so I'm not bothering with a PR. Instead, I'm writing up what I did to get it working here on the off-chance it's useful to someone else.

Versions used

  • Python: 2.7.15 (x86 version)
    • Using pip 9.0.3 (the version that comes installed by default)
  • IDA: 6.9.151221
  • OS: Windows 10

Modified installation instructions

  1. Install x86 version of Python 2.7 and ensure that C:\Python27 and C:\Python27\Scripts are in your path.
  2. cd into the dependencies directory within the repo.
  3. Open up requirements.txt in a text editor and make the following modifications:
    1. pyelftools -> pyelftools == 0.24
    2. idalink -> idalink == 0.11
  4. Run easy_install -Z z3_solver-4.5.1.0.post1-py2.7.egg
    1. The purpose of running this before running pip install is because one of the requirements (angr-only-z3-custom) has z3-solver as a dependency. As a result, if you run pip install first, the most recent version of z3-solver will be installed, which isn't compatible with the old version of angr being installed.
  5. Run pip install -r requirements.txt
  6. Run easy_install -Z archinfo-6.7.1.13-py2.7.egg pyvex-6.7.1.31-py2.7.egg cle-6.7.1.31-py2.7.egg simuvex-6.7.1.31-py2.7.egg capstone-3.0.4-py2.7.egg angr-6.7.1.31-py2.7.egg
  7. Copy the drop directory and drop.py to the IDA plugins directory; DROP should be installed and working.

Since there's a high likelihood of other module updates causing breakage in the future, here's the output of pip freeze on my box. This should be useful if/when an update causes incompatibility.

ana==0.5
angr==6.7.1.31
angr-only-z3-custom==9002
archinfo==6.7.1.13
awesomelib==0.1.0
bintrees==2.0.7
cachetools==2.1.0
capstone==3.0.4
cffi==1.11.5
claripy==6.7.1.31
cle==6.7.1.31
cooldict==1.3
decorator==4.3.0
dpkt-fix==1.7
enum34==1.1.6
future==0.16.0
futures==3.2.0
idacute==1.0.1
idalink==0.11
mulpyplexer==0.8
networkx==1.11
pefile==2018.8.8
plumbum==1.6.7
progressbar==2.5
pycparser==2.17
pyelftools==0.24
python-qt5==0.1.10
pyvex==6.7.1.31
rpyc==4.0.2
sark==1.0
simuvex==6.7.1.31
unicorn==1.0.1
wrapt==1.10.11
z3-solver==4.5.1.0.post1

Also worth mentioning, this plugin was a result of the author's thesis, which contains a lot of details about the plugin's background and design: https://th0mas.nl/downloads/thesis/thesis.pdf