Kann man eine Python .exe entschlüsseln und den Code sehen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Code kannst du "unlesbar" machen, indem du ihn obfuskierst, packst oder Teile davon verschlüsselst. Allerdings wird es immer mit mehr oder weniger Aufwand möglich sein, diese Mechanismen rückgängig zu machen, gerade bei Scriptsprachen. Bei kompilierten Dateien (wie bspw. EXE) ist alles ohnehin um einiges komplizierter.

Code aus einer EXE auszulesen funktioniert, aber erstens bekommst du nicht den originalen Code (bspw. C, Java oder Python) heraus, und wenn, dann sieht das sehr abstrakt aus. Was du siehst, ist Maschinencode aka Assembly. Und zweitens ist das Nachvollziehen von Assembler Code durchaus komplex und anspruchsvoll.

Allerdings verstehe ich deine Frage ohnehin nicht so ganz. Was genau willst du unlesbar machen? Den ganzen Code? Oder Teile des Codes wie bspw. ein Passwort?

Prinzipiell kannst du mit Python sowas schon angehen. Libraries wie Pydasm oder Bindings zu Disassemblern wie Ghidra helfen da. Aber wie gesagt, solange wir nicht wissen, was du willst, ist das schwierig.


TheDinosaurier 
Beitragsersteller
 01.08.2022, 12:10

Danke für deine Antwort. Ich möchte den kompletten Code unlesbar machen, war das deine Frage?

RouteUS66  01.08.2022, 12:28
@TheDinosaurier

Der EXE Code an sich ist doch schon unlesbar? Oder was ist dein Ziel? Was genau soll unlesbar sein.

TheDinosaurier 
Beitragsersteller
 01.08.2022, 21:33
@RouteUS66

Kann man die Exe Datei nicht auslesen bzw. das man den Code sieht?

RouteUS66  01.08.2022, 22:44
@TheDinosaurier

Siehe meine Antwort. Exe muss man disassemblen, das geht nicht so ohne weiteres. Aber wer Assembly versteht, kann auch den Code in einer EXE halbwegs konstruieren. Wenn du Strings / Passwörter / Secrets verschleiern willst vor einfachem Zugriff via "grep" oder "strings" oder irgendwelcher magic CLI Tools von Mandiant, dann musst du die verschlüsseln, bspw. via XOR.

DU lannst unpy2exe benutzen, um die .pyc-Datei zu extrahieren und dann pyREtic starten um den Quellcode zu erhalten.
unpy2exe https://github.com/matiasb/unpy2exe
pyREtic https://github.com/MyNameIsMeerkat/pyREtic/blob/master/docs/HOWTO.md

Am besten die HOWTO lesen (Im zweiten Link) um das Ganze besser zu verstehen, kurzgesagt machst du aber folgendes:

  1. unpy2exe.py [-h] [-o AUSGABE_VERZEICHNIS] [-p PYTHON_VERSION] DATEINAME
  2. Dann zum Verzeichnis von REpdb.py wechseln und das Script ausführen ausführen:

REpdb.py

3.set_project [NEUER PROJEKT NAME]
4. Python-Version auswählen
5. fs_um_decompile [VERZEICHNIS DEINER PYC-DATEI]

Der Quellcode sollte dann in ...\Projects[new project name]\sourcecode\fs_um\ zu finden sein

Woher ich das weiß:Recherche