EDIT (7/15/2017): Updated instructions below. You no longer need Cygwin! Angr installs... seems to work mostly fine... but Z3 runs out of memory and crashes once it hits about 2GB. Not sure what's going on with that; haven't had a lot of time to troubleshoot yet. Also haven't tested Unicorn -- probably doesn't work, either.

I've decided to pursue building an IDA Pro Angr plugin, especially after seeing that this is actually something on the Angr | HELP WANTED page -- I should have looked at that a long time ago!

My IDA license is for Windows, so to avoid insane levels of indirection and convolution during development, I need to install Angr in Windows. However, it turns out that installing Angr in Windows is a bit convoluted itself, and not officially supported anywhere. Some Google searching will lead you to the angr-doc/INSTALL.md page, which says that you can't install Angr on windows via pip. And some additional searching will find you GitHub tickets on the pyvex and capstone pages about not being able to build and/or install on Windows.

Fortunately, those tickets seem a bit outdated, because installing Angr on Windows is possible with a bit of work. It turns out that pyvex now suppors MSVC compilation, which I think is the key piece. Still, I was unable to find a complete walkthrough/guide for installing Angr on Windows anywhere, so that's what I've created below:

Assumptions

  • Windows 10
  • Python 2.7 installed and a properly configured PATH environment variable
  • A lot of gigs (8 or so?) of free disk space for Visual Studio.

Steps

  1. Install Visual Studio 2015. I used the community edition, and installed using the ISO, but the web installer should also work. Just choose a Custom install (you don't need most of the crap it could install for you) and select only Common Tools for Visual C++ 2015, and then install. This would be an appropriate time to brew coffee and then enjoy a cup or two.

    Visual Studio Options

  2. Install Microsoft Visual C++ Compiler for Python 2.7.

    3. Install Cygwin, specifically, g++ and cmake, and then add [cygwin_install_dir]/bin/ to your system's PATH.

     ~~![Cygwin g++](/content/images/2016/11/cygwin_cpp.png)~~
    
     ~~![Cygwin cmake](/content/images/2016/11/cygwin_cmake.png)~~
    
     ~~![PATH environment variables](/content/images/2016/12/setting_up_PATH-1.png)~~
    

    4. Download my install_angr.bat to your Desktop or somewhere easily accessible.
    `

  3. Open up a Visual Studio Developer Command Prompt (required for proper setup of MSVC environment variables).~~, navigate to the place you saved install_angr.bat, and run install_angr.bat.~~~~ Depending on the speed of your computer, you may or may not have time for one more cup of coffee while this runs.~~

    Developer Command Prompt

    Note: You will probably see a lot of errors printed out involving NMAKE and Makefiles and capstone.dll. Don't worry about those, unless the following step doesn't work. :)

  4. Run the following commands:

     pip install pyvex
     pip install unicorn
     pip install simuvex
     pip install angr
    

    Note: Angr needs Unicorn to run, but
    according to this GitHub Issue
    , the PyPi version of the package we're installing here does not yet actually support Angr... Although that GitHub Issue was last updated August 2016, so maybe the Angr patches have been pulled upstream by now. Haven't checked/tested...

  5. Confirm that everything worked by starting a Python interactive shell, and running import angr. If you don't get any (serious) errors, you should be good to go! :)

    Installed Angr