Medusa is a disassembler designed to be both modular and interactive. It runs on Windows and Linux, it should be the same on OSX. This project is organized as a library. To disassemble a file you have to use medusa_dummy or qMedusa. wxMedusa and pydusa are not available anymore.
Medusa requires the following libraries: boost (system, filesystem, thread, date_time), OGDF, and Qt5 for the GUI. You also need CMake for compilation.
Loader | |||||
---|---|---|---|---|---|
Name | Mapping | Import | Export | Symbols | Notes |
ELF | yes | yes | no | no | Some kind of reloc are not handled |
PE | yes | yes | no | no | |
GameBoy | yes | yes | yes | yes |
|
Architecture | ||||
---|---|---|---|---|
Name | Mode | Disassembly | Semantic | Notes |
x86 | 16-bit | yes | yes | |
x86 | 32-bit | yes | partial | Support until SEE4.2 |
x86 | 64-bit | yes | partial | |
z80 | gameboy | yes | yes | |
avr8 | yes | no | ||
arm | normal | partial | no | Experimental |
arm | thumb | partial | no | |
arm | thumb2 | partial | no |
User interface | ||||||
---|---|---|---|---|---|---|
Name | interactivity | Comment | Label | Graph | Database | Notes |
qt | partial | yes | yes | yes | partial | |
dummy | no | no | no | no | no | outdated |
python | no | no | no | no | no | broken |
Database | ||
---|---|---|
Name | Save | Load |
text | partial | no |
Operating System | |
---|---|
Name | Notes |
UNIX | Not yet implemented |
Windows |
Each versions of Medusa bring a new specific feature.
- 0.1 the beginning of the project
- 0.2 new qt interface
- 0.3 flow graph
- 0.4 load/save database
- 0.5 semantic support
- 0.6 better python binding
- 0.7 debugger
First, we need to retrieve and compile the library OGDF (Windows users must execute cmake command from Visual Studio (...) Command Prompt):
git clone https://github.com/ogdf/ogdf
cd ogdf
mkdir _release
cd _release
cmake -DCMAKE_BUILD_TYPE=Release ..
make # if you use Makefile (usually UNIX users)
nmake # if you use NMakefile (Windows users)
cd ..
mkdir _debug
cd _debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make or nmake
Next step is the Boost installation, you can either download a built version or compile yourself. Boost is available here
Now, make sure you have installed Qt5 if you need a graphical user interface (and I'm pretty you do ;)). Pick the right version on the official website or use your package manager.
Finally, we're ready to retrieve and compile medusa:
git clone https://github.com/wisk/medusa
mkdir build
cd build
cmake -DOGDF_PATH:PATH=<Path to the OGDF directory> -DBOOST_ROOT:PATH=<path to the boost directory> -DQT5_CMAKE_PATH:PATH=<Path to Qt5 cmake scripts directory> ..
Note: If CMake is unable to find Boost, try to define BOOST_LIBRARYDIR instead. This variable must be set to the library directory (e.g.: C:\boost_1_55_0\lib64-msvc-11.0). In my configuration, QT5_CMAKE_PATH is set to /usr/lib/cmake on ArchLinux and C:\Qt\Qt5.0.2\5.0.2\msvc2012_64\lib\cmake on Windows. For Windows users, you should probably add -G"Visual Studio XX <Win64>" where XX is your Visual Studio version and <Win64> if you build medusa in 64-bit.
- IRC: irc://freenode.net/#medusa_disasm
- Twitter: https://twitter.com/@medusa_disasm
My schoolmates: Edouard, François and François-Xavier.