Erstellen eines Python-Binärcodes

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
wie kann ich aus meinem selbst geschriebenen Python-Code einen ausführbaren Binärcode erstellen?
ich hab schon etwas gesucht, ganz klar ist es mir aber echt net geworden :(
Py2Exe, PyInstaller, cx_Freeze, .... leider hab ich keine ahnung.
lg chris
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Genau damit geht das, je nachdem was man unter "Binärcode" versteht, den echte Maschinensprache wird dabei nicht erzeugt. ;-)

Du hast alle mir bekannten genannt. Alle haben Vor- und Nachteile in dem was sie können und besonders wie gut sie dabei sind Bibliotheken und deren Abhängigkeiten zu erkennen, den das ist bei allen Tools nicht perfekt, es gibt immer Programme die nicht funktionieren weil Bibliotheken nicht gefunden werden oder von dir eingebundenen Datei.

Generell muss jeder für sich die Entscheidung treffen ob das packen von Python Programmen sinnvoll ist.

Am einfachsten wäre wenn du erzählst was du vorhast, was das Ziel ist.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

ich habe einen eigenen code in python geschrieben und möchte diesen "quellcode" auf verschiedenen rechner installieren,
jedoch soll der quellcode vor zugriff von außen geschützt sein, so daß man den eigentlichen code nicht sieht (nicht vorhanden ist),
sondern nur ein binärcode (so wie microsoft, usw. das auch machen).
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du kannst "nur" PYC-Dateien ausliefern, die sind dann vor den neugierigen Augen erstmal verborgen. Es gibt aber decompyler, mit denen der geneigte Hacker den Quellcode wieder erstellen kann. Alternativ kannst du cython verwenden, das kompiliert Python zu direkten API-Aufrufen, und macht es noch mal ein bisschen schwieriger.
BlackJack

@DMD-OL: Wenn Du Code durch Zugriffe von aussen schützen willst, dann darfst Du dem Anwender den Code nicht in die Hand geben. Egal in welcher Form. Also zum Beispiel in dem Du eine Webanwendung programmierst. Löst auch gleich das Problem mit dem Verteilen der Software, weil man die gar nicht verteilen muss, sondern nur die URL und die Zugangsdaten. :-)
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
ich habe jetzt mit py2exe eine .exe-datei aus meinem code fenster.py gemacht,
d. h. nach anleitung:
1. http://www.py2exe.org/index.cgi/Tutorial
2. http://stackoverflow.com/questions/1093 ... -me-errors und
3. http://stackoverflow.com/questions/3782 ... oad-failed (da ich ein 64-System hab)

es werden dort zwei ordner erstellt: build und dist.
wenn ich in den ordner dist navigiere und die frisch erstellte .exe (d.h. fenster.exe) starte, wird mein programm
fehlerfrei als .exe ausgeführt (es erscheint ein Tkinter-Fenster) :)
genau das war mein ziel, da die .exe-datei mithilfe von cython einen binärcode verwendet?
stimmt das so?
BlackJack

@DMD-OL: Was hat denn Cython jetzt damit zu tun?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
genau das war mein ziel, da die .exe-datei mithilfe von cython einen binärcode verwendet?
Cython != CPython

Außerdem gibt es Tools mit denen man mit py2exe generierte .exe-Dateien wieder auseinander nehmen kann und dann auch den Python-Code hat.

py2exe musst du dir so vorstellen, dass "nur" der Python-Interpreter, dein Quellcode und ein paar anderen Sache in eine .exe-Datei "verpackt" werden. Beim Ausführen der Datei wird zur der Python-Interpreter gestartet, der dann deinen Code ausführt. Das ist also _nicht_ so, wie z.B. ein C-Programm in Maschinencode zu kompilieren, damit es direkt ausgeführt werden kann.

Oder anders: wer's drauf anlegt, hat immer noch Zugriff auf deinen Python-Code.

Gruß, noisefloor
Benutzeravatar
Kebap
User
Beiträge: 687
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

noisefloor hat geschrieben:Außerdem gibt es Tools mit denen man mit py2exe generierte .exe-Dateien wieder auseinander nehmen kann
Also genau wie bei Microsoft wie gewünscht :mrgreen:
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

ok. ein zurück gibs ja immer, irgendwie...
@BlackJack: deine frage hab ich mir ja grade auch gestellt :)
ich weiß es auch net!
BlackJack

@DMD-OL: Es auch eine Frage des Aufwands und bei Python, selbst in Bytecode-Form und in eine ”EXE” verpackt, ist das nun mal schwer irgend etwas vom Code tatsächlich zu ”verstecken”. Es gibt verschiedene, teils kommerzielle, Dekompilierer für den Bytecode. Es gibt in der Standardbibliothek das `dis`-Modul um sich den Bytecode als ”Maschinensprache” anzeigen zu lassen. Man muss um Änderungen vornehmen zu können auch nicht zwingend etwas am Bytecode ändern. Wenn man verstanden hat wie das Programm funktioniert, oder der Teil an dem man eingreifen möchte, dann kann man auch einfach den vorhandenen Bytecode laden und per ”monkey patching” eigene/andere Funktionalität injizieren.

Und je mehr man anstellt um das alles irgendwie zu verhindern, um so mehr stellt sich die Frage warum man dann überhaupt Python verwendet, wenn man krampfhaft versucht die eigentlich positiven Seiten der Sprache zu verhindern. Oder eben warum man Python verwendet, wenn man diese Eigenschaften nicht positiv findet.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

ja, da hast du absolut recht.
ich habe nur eine kleine programmidee in python umgesetzt und will jetzt auch nicht, daß jeder der das programm haben will,
es einfach über copy/paste durch die gegend verschicken kann.
übrigens verwende ich jetzt den pyinstaller um eine .exe-datei zu generieren. das funktioniert spitze auf meinem eigenen rechner.
wenn ich jetzt den gesamten mit pyinstaller generierten ordner auf einen anderen rechner übertrage, funktioniert das dann auch darauf oder
muß die .exe auf jedem ordner einzelnd generiert werden?
(und sorry für wohl so doofe fragen)
BlackJack

@DMD-OL: Die EXE kann doch auch jeder kopieren der das Programm haben will‽
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
ich habe nur eine kleine programmidee in python umgesetzt und will jetzt auch nicht, daß jeder der das programm haben will,
es einfach über copy/paste durch die gegend verschicken kann.
Du kannst Software auch über die richtige Lizenz / Nutzungsbedingungen schützen. Was aber gerade bei einer restriktiven Lizenz nur Sinn macht, wenn du dass auch von Anfang bis Ende durchziehst, also ggf. mit Klage und Rechtsstreit gegen Lizenzverstöße. Wenn du dazu weder Zeit, Lust und Geld hast, dann nimm' einfach hin, dass es ggf. "Raubkopien" deiner Software gibt. Oder nimm' direkt eine liberale Lizenz :-)

Gruß, noisefloor
Antworten