Skip to content

anat/medusa

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Medusa

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.

Prerequisites

Medusa requires the following libraries: boost (system, filesystem, thread, date_time), OGDF, and Qt5 for the GUI. You also need CMake for compilation.

Feature

+-------------------------------------------------------------------------------------------+ | 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 | - GameBoy Color registers are not handled | | | | | | | - All mappers are not handled | +---------+---------+--------+--------+---------+-------------------------------------------+

+----------------------------------------------------------------+ | 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 | | +---------+---------------------+

Roadmap

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

Compilation

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.

Screenshots

Main interface

image

Control flow graph

image

Interactivity

image

Contacts

Acknowledgements

My schoolmates: Edouard, François and François-Xavier.

About

An open source interactive disassembler

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published