Seite 1 von 1

Bytecode dekompilieren

Verfasst: Freitag 3. März 2006, 12:44
von Badmaster
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 :-(

Verfasst: Freitag 3. März 2006, 12:49
von jens
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...

Verfasst: Freitag 3. März 2006, 12:52
von Badmaster
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 :)

Verfasst: Freitag 3. März 2006, 12:55
von jens

Verfasst: Freitag 3. März 2006, 13:20
von Badmaster
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

Verfasst: Freitag 3. März 2006, 14:00
von Badmaster
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!

Verfasst: Freitag 3. März 2006, 14:07
von jens
Du weist das man decompile erstmal nur Bytecode von Python v1.5 bis v2.3.3 füttern kann und IMHO nur von cPython...

Verfasst: Freitag 3. März 2006, 14:07
von modelnine
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.

Verfasst: Freitag 3. März 2006, 14:33
von Badmaster
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" ...

Verfasst: Freitag 3. März 2006, 14:35
von jens
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

Verfasst: Freitag 3. März 2006, 14:36
von modelnine
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.