Bytecode dekompilieren

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
Badmaster
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 13:40

Freitag 3. März 2006, 12:44

Hallo an alle.
ich spiele gerade ein wenig mit Python rum und habe nun ein Problem bei dem ich nicht weiterkomme.

Ich würde gerne ein Programm das auf Python basiert verändern, das ist eigentlic gar nicht so ein problem, denn es geht ganz einfach per execfile() in einer datei und dann eigenen thread machen etc.

Damit ich nun die python Funktionen des Programms aber auch nutzen kann würde ich gerne eine datei die in bytecode ist, zu normalepython sourcecode decompilieren.
Ich habe es bisher leider nur geschafft, die Baumstruktur auszulesen, der eigentliche inhalt der dateien blieb mir bisher noch vorenthalten.

Wenn also jemand weiss wie ich diese Datei "entpacken" oder dekompilieren kann wäre ich demjenigen SEHR verbunden! :-)

http://badmaster.ba.ohost.de/compiled.rar

Danke VIELMALS im voraus! :)

Gruss BM

ps: man möge mir vergeben, falls dieser vorgang völlig simpel ist und ich nur ein zwei FAQs hätte lesen müssen... ich habe nichts dazu gefunden :-(
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 3. März 2006, 12:49

Werd doch mal etwas konkreter, welches Programm ist es? Warum hast du die Sourcen nicht mehr?

Normalerweise ändert man bestehende Module durch erben und überscheiben von Methoden und nicht durch fileexec...
Zuletzt geändert von jens am Freitag 3. März 2006, 12:55, insgesamt 1-mal geändert.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Badmaster
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 13:40

Freitag 3. März 2006, 12:52

jens hat geschrieben:Werd doch mal etwas konkreter, welches Programm ist es? Warum hast du die Sourcen nicht mehr?

Normalerweise ändert man bestehende Module durch erben und überscheiben von Methoden und nicht durch fileexec...
es handelt sich um eve-online
ein spiel was auf (stackless-)python zurückgreift (alles bis auf die grafik engine ist python).

edit: oh und apropo decompyle, das will leider nicht so ganz bei mir.
installation ergibt
"error: Python was built with version 7.1 of Visual Studio, and extensions need to be built with the same version of the compiler, but it isn't installed."
wenn jemand die binaries für winxp hat oder es mit der geposteten datei versuchen würde, das wäre sehr nett :)
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 3. März 2006, 12:55


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Badmaster
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 13:40

Freitag 3. März 2006, 13:20

vielen Dank für deine Antworten!

nun muss ich nur noch jemanden finden der mehr glück hat bei der installation von "decompyle", denn 10EUR pro 5KB würde für eine datei die entzippt 7.8MB ist eher teuer werden :S
Badmaster
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 13:40

Freitag 3. März 2006, 14:00

also ich habe nun jemanden gefunden der für mich auf seiner debian Installation versucht hat die datei compiled.code zu decompilen, jedoch ohne Erfolg...

irre ich mich vielleicht und die Datei ist gar nicht üblicher python bytecode?

Danke im Voraus!
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 3. März 2006, 14:07

Du weist das man decompile erstmal nur Bytecode von Python v1.5 bis v2.3.3 füttern kann und IMHO nur von cPython...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Freitag 3. März 2006, 14:07

Eve Online arbeitet mit Stackless Python (und eben nicht CPython), es ist also davon auszugehen dass der Byte-Code Stackless Byte-Code ist, und soweit ich weiß sind die beiden VMs nicht binär-kompatibel.
--- Heiko.
Badmaster
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 13:40

Freitag 3. März 2006, 14:33

modelnine hat geschrieben:Eve Online arbeitet mit Stackless Python (und eben nicht CPython), es ist also davon auszugehen dass der Byte-Code Stackless Byte-Code ist, und soweit ich weiß sind die beiden VMs nicht binär-kompatibel.
danke, das wusste ich nicht...
bisher scheitere ich, und die Person die mir mit seiner debian installation helfen wollte, aber sogar schon an der insstallation von decompyle, das ist natürlich OT...

also das einzige was ich noch sagen kann ist, dass es ganz sicher irgendwie ( ;-) ) geht die datei zu dekompilieren, nur leider sind nicht alle so hilfsbereit wie ihr...

ist es möglich, dass die datei compiled.code gar nicht bytecode ist sondern einfach nur mit marshal serialisiert wurde, oder beides? ich habe versucht die datei mit marshal.dumps und marshal.dump in eine datei zu schreiben, aber es gibt weiterhin unlesbaren "code" ...
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 3. März 2006, 14:35

Vielleicht installierst du dir mal http://www.stackless.com Python und testets damit mal, ob du mit dem Bytecode was machen kannst...

Das ist vielleicht die richtige Richtung: http://www.stackless.com/wiki/Pickling

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Freitag 3. März 2006, 14:36

ist es möglich, dass die datei compiled.code gar nicht bytecode ist sondern einfach nur mit marshal serialisiert wurde, oder beides? ich habe versucht die datei mit marshal.dumps und marshal.dump in eine datei zu schreiben, aber es gibt weiterhin unlesbaren "code" ...
Wenn sie mit marshall serialisiert wurde ist es Byte-Code. Sprich: Du mußt ihn trotzdem noch dekompilieren. Da aber Eve-Online einen abgewandelten Stackless-Interpreter benutzt (wovon ich jetzt mal direkt ausgehen würde) kann es gut sein dass es allgemein nicht geht den Byte-Code zu dekompilieren, außer Du kommst an die Quellen des Eve-Online-Python-Interpreters und kannst den zerlegen.

Ich würde Dich ja jetzt glatt ans Stackless-Projekt verweisen (http://www.stackless.com). Bei denen solltest Du mal nachfragen können wie es denn jetzt genau mit Eve-Online aussieht; soweit ich weiß ist einer der Stackless-Menschen bei der Firma die Eve-Online macht angestellt.
--- Heiko.
Antworten