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:
- Windows 10
- Python 2.7 installed and a properly configured
- A lot of gigs (8 or so?) of free disk space for Visual Studio.
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.
Install Cygwin, specifically, g++ and cmake, and then add
[cygwin_install_dir]/bin/to your system's
Download my install_angr.bat to your Desktop or somewhere easily accessible.
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.
Note: You will probably see a lot of errors printed out involving
capstone.dll. Don't worry about those, unless the following step doesn't work. :)
Confirm that everything worked by starting a Python interactive shell, and running
import angr. If you don't get any errors, you should be good to go! :)