cea-sec/miasm

View on GitHub
doc/README.md

Summary

Maintainability
Test Coverage
# Documentation

Miasm documentation is organized around the following elements:

- code comments, as:
```python
>>> from miasm.core.locationdb import LocationDB
>>> help(LocationDB)

class LocationDB(builtins.object)
 |  LocationDB is a "database" of information associated to location.
 |  
 |  An entry in a LocationDB is uniquely identified with a LocKey.
 |  Additional information which can be associated with a LocKey are:
 |  - an offset (uniq per LocationDB)
 |  - several names (each are uniqs per LocationDB)
 |  
 |  As a schema:
 |  loc_key  1 <-> 0..1  offset
 |           1 <-> 0..n  name
 |  
 |  >>> loc_db = LocationDB()
 |  # Add a location with no additional information
 |  >>> loc_key1 = loc_db.add_location()
 |  # Add a location with an offset
 |  >>> loc_key2 = loc_db.add_location(offset=0x1234)
 |  # Add a location with several names
 |  >>> loc_key3 = loc_db.add_location(name="first_name")
 |  >>> loc_db.add_location_name(loc_key3, "second_name")
 |  # Associate an offset to an existing location
 |  >>> loc_db.set_location_offset(loc_key3, 0x5678)
 |  # Remove a name from an existing location
 |  >>> loc_db.remove_location_name(loc_key3, "second_name")
...
```

- examples for the main features (see `/example`)
- interactive tutorials (IPython Notebooks) on the following topics:
  - Emulation API: [notebook](jitter/jitter.ipynb)
  - Miasm's IR bricks known as `Expr`: [notebook](expression/expression.ipynb)
  - Lifting from assembly to IR: [notebook](ir/lift.ipynb)
  - `LocationDB` usage, the database for locations: [notebook](locationdb/locationdb.ipynb)
- more complex examples through blog posts on [miasm.re](https://miasm.re)
- cheatsheets:
  - `Sandbox` and associated emulation options: [cheatsheet](cheatsheets/reminder_sandbox.pdf)
  - Disassembler, lifter and associated structures: [cheatsheet](cheatsheets/reminder_disassembler.pdf)