You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pyrrha is a filesystem cartography and correlation software focusing on visualization. It currently focuses on the relationship between executable files but aims at enabling anyone to map and visualize any relationship types. It uses the open-source code source
4
20
explorer [NumbatUI](https://github.com/quarkslab/NumbatUI) to provide users with an easy way to navigate through and search for
5
21
path to function.
22
+
<!-- # --8<-- [end:intro]-->
6
23
7
-

24
+

8
25
<palign="center">
9
26
<b>An example of the symbols and libraries imported by <code>libgcc_s.so.1</code> and of the symbols which reference this library.</b>
10
27
</p>
11
28
12
-

29
+

13
30
<palign="center">
14
31
<b>An example of the symlinks which point on <code>busybox</code>.</b>
15
32
</p>
16
33
17
-
18
34
## Installation
19
35
20
36
The installation is done in three parts:
21
37
22
-
- Installing mapper external dependencies:
23
-
* IDA dissassembler (with the decompilation option for the `exe-decomp` mapper).
24
-
* [`Quokka` IDA plugin](https://github.com/quarkslab/quokka/releases).
25
-
- Installing `Pyrrha` as a Python module (`pip install pyrrha-mapper` or from the sources).
26
-
- Installing [`NumbatUI`](https://github.com/quarkslab/NumbatUI) (or [`Sourcetrail`](https://github.com/CoatiSoftware/Sourcetrail)) to be able to visualize Pyrrha's results.
27
-
28
-
29
-
!!! example "Quick Start"
30
-
31
-
=== "Sourcetrail"
32
-
33
-
1. Install Quokka plugin by downloaded the appropriate version from its [release](https://github.com/quarkslab/quokka/releases) page. Then follow the instructions according to your OS.
1. Download last Sourcetrail [release](https://github.com/CoatiSoftware/Sourcetrail/releases), unzip it and run the `setup.exe`.
63
-
2. Install pyrrha: `pip install pyrrha-mapper`
64
-
65
-
=== "MacOS"
66
-
67
-
1. Download last Sourcetrail [release](https://github.com/CoatiSoftware/Sourcetrail/releases), and install it following [Sourcetrail documentation](https://github.com/CoatiSoftware/Sourcetrail/releases).
68
-
2. Install pyrrha: `pip install pyrrha-mapper`
38
+
1. Install mapper external dependencies: IDA dissassembler (with the decompilation option for the `exe-decomp` mapper) and [`Quokka` IDA plugin](https://github.com/quarkslab/quokka/releases).
39
+
1. Install `Pyrrha` itself.
40
+
1. Install [`NumbatUI`](https://github.com/quarkslab/NumbatUI) (or [`Sourcetrail`](https://github.com/CoatiSoftware/Sourcetrail)) to be able to visualize Pyrrha's results.
69
41
42
+
> [!NOTE]
43
+
> A quick start installation is available on [Pyrrha documentation](https://quarkslab.github.io/pyrrha/#installation).
70
44
71
-
=== "NumbatUI (Ubuntu/Debian)"
72
-
73
-
_Tested only for last Ubuntu/Debian._
74
-
75
-
First install Quokka plugin by downloaded the appropriate version from its [release](https://github.com/quarkslab/quokka/releases) page.
76
-
77
-
Then run the following script that will clone and build `NumbatUI` and install `Pyrrha`. `NumbatUI` will in `numbatui/build/Release/app`.
cmake -DCMAKE_BUILD_TYPE="Release" -DBUILD_CXX_LANGUAGE_PACKAGE=ON -DBUILD_PYTHON_LANGUAGE_PACKAGE=ON ../.. && make NumbatUI -j $(nproc)
97
-
98
-
# Install pyrrha
99
-
pip install pyrrha-mapper
100
-
```
101
-
102
-
103
-
104
-
Detailed instructions can be found on the [dedicated documentation page](https://quarkslab.github.io/pyrrha/installation/).
105
-
45
+
<!-- # --8<-- [start:usage]-->
106
46
## Usage
107
-
The usage workflow is composed of two steps which allow you to separate DB creation and result visualization.
108
-
109
-
1. Run Pyrrha to obtain NumbatUI compatible files (`*.srctrlprj` for the project file and `*.srctrldb` for the DB file). With the python package, you can just launch the command:
110
-
```
111
-
> pyrrha
112
-
Usage: pyrrha [OPTIONS] COMMAND [ARGS]...
113
47
114
-
Mapper collection for firmware analysis.
115
-
116
-
Options:
117
-
-h, --help Show this message and exit.
118
-
119
-
Commands:
120
-
exe-decomp Map an executable call graph with its decompiled code.
121
-
fs Map PE and ELF files of a filesystem into a sourcetrail-compatible db.
122
-
fs-cg Map the Call Graph of every firmware executable a sourcetrail-compatible db.
48
+
The usage workflow is composed of two steps which allow you to separate DB creation and result visualization.
123
49
124
-
```
125
-
2. Visualize your results with Sourcetrail
126
-
```
127
-
> numbatui PROJECT_NAME.srctrlprj
128
-
```
50
+
1. Run Pyrrha to obtain NumbatUI compatible files (`*.srctrlprj` for the project file and `*.srctrldb` for the DB file). With the python package, you can just launch the command `pyrrha`.
51
+
2. Visualize your results with Sourcetrail/NumbatUI.
129
52
130
-
The detailed documentation of each mapper is available in the [documentation](https://quarkslab.github.io/pyrrha/mappers/mappers/).
53
+
<!-- # --8<-- [end:usage] -->
54
+
> [!NOTE]
55
+
> The detailed documentation of each mapper is available in the [documentation](https://quarkslab.github.io/pyrrha/mappers/mappers/).
131
56
57
+
<!-- # --8<-- [start:publications]-->
132
58
## Publications
133
59
134
60
Pyrrha has been presented by Eloïse Brocas at two conferences listed below. These talks include live demo of the `fs` parser which map links between libraries and executables files.
@@ -140,10 +66,14 @@ The theoritical details below the `fs-cg` and `exe-decomp` mappers implementatio
140
66
141
67
- Streamlining Firmware Analysis with Inter-Image Call Graphs and Decompilation, *RE/verse.io 2025*. [[slides]](https://github.com/quarkslab/conf-presentations/blob/master/Confs/REverse-25/REverse_firmware_analysis_2025.pdf)[[video]](https://www.youtube.com/watch?v=LsDnrfZt_Xs)
142
68
69
+
<!-- # --8<-- [end:publications] -->
70
+
71
+
<!-- # --8<-- [start:authors] -->
143
72
## Authors
144
73
- Eloïse Brocas (@ebrocas), Quarkslab
145
74
- Robin David (@RobinDavid), Quarkslab
146
75
147
76
148
77
### Past Contributors
149
-
- Pascal Wu (@pwu42), during his internship at Quarkslab
78
+
- Pascal Wu (@pwu42), during his internship at Quarkslab
- <center> _Symbols and libraries imported by `libgcc_s.so.1`._</center>
6
+
7
+
- <center>_Symlinks pointing on `busybox`._</center>
8
+
</div>
9
+
10
+
## Installation
11
+
The installation is done in three parts:
12
+
13
+
1. Install mapper external dependencies: IDA dissassembler (with the decompilation option for the `exe-decomp` mapper) and [`Quokka` IDA plugin](https://github.com/quarkslab/quokka/releases).
14
+
1. Install `Pyrrha` itself.
15
+
1. Install [`NumbatUI`](https://github.com/quarkslab/NumbatUI) (or [`Sourcetrail`](https://github.com/CoatiSoftware/Sourcetrail)) to be able to visualize Pyrrha's results.
16
+
17
+
!!! example "Quick Start"
18
+
19
+
=== "Sourcetrail"
20
+
21
+
1. Install Quokka plugin by downloaded the appropriate version from its [release](https://github.com/quarkslab/quokka/releases) page. Then follow the instructions according to your OS.
1. Download last Sourcetrail [release](https://github.com/CoatiSoftware/Sourcetrail/releases), unzip it and run the `setup.exe`.
51
+
2. Install pyrrha: `pip install pyrrha-mapper`
52
+
53
+
=== "MacOS"
54
+
55
+
1. Download last Sourcetrail [release](https://github.com/CoatiSoftware/Sourcetrail/releases), and install it following [Sourcetrail documentation](https://github.com/CoatiSoftware/Sourcetrail/releases).
56
+
2. Install pyrrha: `pip install pyrrha-mapper`
57
+
58
+
59
+
=== "NumbatUI (Ubuntu/Debian)"
60
+
61
+
_Tested only for last Ubuntu/Debian._
62
+
63
+
First install Quokka plugin by downloaded the appropriate version from its [release](https://github.com/quarkslab/quokka/releases) page.
64
+
65
+
Then run the following script that will clone and build `NumbatUI` and install `Pyrrha`. `NumbatUI` will in `numbatui/build/Release/app`.
0 commit comments