diff --git a/README.md b/README.md index 956e3382..5d0bedda 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Cutter is developed on OS X, Linux and Windows. The first release for users will Proper documentation and website will be created before the first release. -Roadmap information for developers can be found [here](https://github.com/radareorg/cutter/wiki/Roadmap). +Roadmap information for developers can be found [here](https://github.com/radareorg/cutter/tree/master/docs/Roadmap.md). ## Help diff --git a/docs/Common-errors.md b/docs/Common-errors.md new file mode 100644 index 00000000..da5690ed --- /dev/null +++ b/docs/Common-errors.md @@ -0,0 +1,18 @@ +# Common errors + +Please make sure you have the appropriate QT version: [https://www.qt.io/qt5-6/](https://www.qt.io/qt5-6/) + +> r_core development package not found + +If you installed radare2 and still encounter this error, could be your `PATH` environment variable is set improperly (doesn't contain `/usr/local/bin`). That can be, for example, due to `Qt Creator.app` being copied over to `/Applications`. +To fix this, append: + +> :/usr/local/bin + +to the `PATH` variable within the *Build Environment* section in Qt Creator. See the screenshot below should you encounter any problems. + +![PATH variable settings](https://d0vine.github.io/images/iaito_settings.png) + +## Windows + +See [Compiling on Windows](https://github.com/hteso/iaito/wiki/Compiling-on-Windows). \ No newline at end of file diff --git a/docs/Compiling-on-Windows.md b/docs/Compiling-on-Windows.md new file mode 100644 index 00000000..91641cc2 --- /dev/null +++ b/docs/Compiling-on-Windows.md @@ -0,0 +1,58 @@ +# Compiling on Windows + +## Cloning the project + +Make sure that when cloning the project you use `git clone --recurse-submodules` or run `git submodule init` and `git submodule update` to clone the [iaito_win32](https://github.com/mrexodia/iaito_win32) submodule. + +## Setting up Qt 5.6.2 + +It is advised to use [Qt 5.6.2](https://download.qt.io/archive/qt/5.6/5.6.2) to compile on Windows. Install one of the packages (MinGW or MSVC) before you start. If you want to use a different Qt version, make sure to change the commands below accordingly. + +## Building Iaito + +There are two main methods to build Iaito. Choose the one you prefer. + +#### Building with Qt Creator + +See [Adding Kits](http://doc.qt.io/qtcreator/creator-targets.html) for documentation on how to setup Qt kits (this works for both MinGW and MSVC). Once you have set up a kit simply open `Iaito.pro`, select a kit and compile. + +#### Building with CMake + +In the project root, run: + +```batch +set CMAKE_PREFIX_PATH=c:\Qt\qt-5.6.2-msvc2013-x86\5.6\msvc2013\lib\cmake +mkdir build-cmake +cd build-cmake +cmake-gui ../src +``` + +Click `Configure` and select `Visual Studio 12 2013` from the list. After configuration is done, click `Generate` and you can open `Iaito.sln` to compile the code as usual. + +## Deploying/Running Iaito + +**These steps are required to get iaito.exe to run.** + +You can use the following commands to deploy a standalone version of Iaito for your friends (assuming you have copied `iaito.exe` to a new empty directory and opened a terminal there). + +```batch +set PATH=%PATH%;c:\Qt\qt-5.6.2-msvc2013-x86\5.6\msvc2013\bin +windeployqt iaito.exe +``` + +After this you will need to add the following files next to `iaito.exe` (they can usually be found in your system directories, OpenSSL binaries can be found [here](https://slproweb.com/products/Win32OpenSSL.html)): + +``` +libeay32.dll +ssleay32.dll +MSVCP120.dll +MSVCR120.dll +``` + +After that you have to extract the [recommended radare2 version](https://github.com/mrexodia/iaito_win32/releases/latest) (`radare2-XXXXXX.zip`) in this directory so that you have `iaito.exe` and `libr_core.dll` next to each other. + +Starting `iaito.exe` should open the GUI. Typing `?d call` in the command bar should show you: + +> calls a subroutine, push eip into the stack (esp) + +![windows screenshot](https://i.imgur.com/BPKSSZY.png) \ No newline at end of file diff --git a/docs/Compiling-with-CMake.md b/docs/Compiling-with-CMake.md new file mode 100644 index 00000000..d9645824 --- /dev/null +++ b/docs/Compiling-with-CMake.md @@ -0,0 +1,48 @@ +# Compiling with CMake + +The "official" way to build Iaito is by using qmake, but as an alternative, a [CMakeLists.txt](https://github.com/hteso/iaito/blob/master/src/CMakeLists.txt) is provided, so CMake can be used as well. + +This page provides a guide to compile on **Linux** or **macOS**, the process for Windows is described in [[Compiling on Windows|Compiling-on-Windows]]. + +## Requirements +* CMake >= 3.1 +* Radare2 installed from submodule, see [README.md](https://github.com/hteso/iaito#requirements) +* Qt 5.6 including the components Core Widgets Gui WebEngine WebEngineWidgets + +## Building + +The root for CMake is in src/. In-source builds are **not allowed**, so you **must** run CMake from a separate directory: +``` +cd src +mkdir build +cd build +cmake .. +``` + +If all went well, you should now have a working Makefile in your build directory: +``` +make +``` + +## Troubleshooting + +Depending on how Qt installed (Distribution packages or using the Qt installer application), CMake may not be able to find it by itself if it is not in a common place. You may encounter an error that looks like this: +``` +CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26 (find_package): + Could not find a package configuration file provided by "Qt5WebEngine" with + any of the following names: + + Qt5WebEngineConfig.cmake + qt5webengine-config.cmake + + Add the installation prefix of "Qt5WebEngine" to CMAKE_PREFIX_PATH or set + "Qt5WebEngine_DIR" to a directory containing one of the above files. If + "Qt5WebEngine" provides a separate development package or SDK, be sure it + has been installed. +``` + +If that is the case, double check that Qt 5.6 is installed correctly and contains all required components. Locate its prefix (a directory containing bin/, lib/, include/, etc.) and specify it to CMake using `CMAKE_PREFIX_PATH` in the above process, e.g.: +``` +rm CMakeCache.txt # the cache may be polluted with unwanted libraries found before +cmake -DCMAKE_PREFIX_PATH=/opt/Qt/5.6/gcc_64 .. +``` \ No newline at end of file diff --git a/docs/Roadmap.md b/docs/Roadmap.md new file mode 100644 index 00000000..403f3a00 --- /dev/null +++ b/docs/Roadmap.md @@ -0,0 +1,23 @@ +# ROADMAP + +All development efforts before 1.0 release should focus on stability and installers creation for all three major platforms. Big refactors and new features are meant for future releases. + +## Iaitō 1.0 + +**Goal:** Publish installers of the application with the current application features. + +- Fix all the issues and make the application stable +- Create installers for OS X, Linux and Windows +- Create application documentation and manual +- Create website for non-developers. Examples: + - [Bokken](http://bokken.re) + - [Radare](http://www.radare.org) + - [x64dbg](http://x64dbg.com) + +## Post 1.0 + +- Migrate the application to a newer Qt version +- Move graph view from the actual HTML one to a Qt version based on x64dbg [graph view](http://x64dbg.com/blog/2016/07/27/Control-flow-graph.html) +- Move the code towards the use of r2pipe and JSON commands +- Refactor the code +- Add new and awesome features! \ No newline at end of file