> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/rev/python/decompiler-un-executable.md).

# Décompiler un exécutable

Comment récupérer le bytecode (fichier .pyc) à partir d'un exécutable

{% embed url="<https://github.com/extremecoders-re/pyinstxtractor>" %}

## ELF

```
python pyinstxtractor.py fichier.elf
```

Les fichiers .pyc sont placés dans le dossier `pydata.dump_extracted`.

{% hint style="success" %}
En cas de problème, utiliser cette méthode:

1. Extraire les données de la section `pydata`

```
objcopy --dump-section pydata=pydata.dump testfile.elf
```

2. Exécuter l'outil sur le fichier dump

```
python pyinstxtractor.py pydata.dump
```

Plus d'informations ici:

<https://github.com/extremecoders-re/pyinstxtractor/wiki/Extracting-Linux-ELF-binaries>
{% endhint %}

{% hint style="warning" %}
Si l'outil indique que la version de python est différente de celle utilisée pour compiler l'exécutable: changer de version avec pyenv (voir [Changer de version Python](/cyber/rev/python/changer-de-version-python.md)).
{% endhint %}

## EXE

```
python pyinstxtractor.py fichier.exe
```
