Exedatei ändern

I

IKEAFREAX

Moi,

als eigentlicher 3D Designer begebe ich mich gerade ins fremde Hoheitsgebiet. Also:

In wie fern ist es möglich, eine .exe Datei umzuschreiben? Problem ist in etwa, ein Spiel mit einer anderen exe Datei zu starten, die zwar vom gleichem Spiel kommt, aber von einer höheren Version. Startet man jetzt die "neue" exedatei, kommt dementsprechend die Fehlermeldung:

recursive error after: User Interface is verion 3, expected 4

(da die eigentlichen Spieldaten ja noch von der Version 3 sind, nur die exe Datei von der Version 4)

Die Änderungen belaufen sich in der exedatei der Version 4 aber auf nebensächlichkeiten (die nichts mit dem eigentlichem Spiel zu tun haben), so dass sie mit den normalen Daten der version 3 auch läuf.

Ich hoffe, ihr blickt da durch. Und jetzt kommt nicht mit Spiel updaten, denn dann kommt nehmlich genau der bittere Nebeneffekt, den "wir" nicht haben wollen. (Längere Geschichte, aber unwichtig)

[edit] kann man die exedatei von version 4 so umschreiben, dass sie a) nicht mehr nach Spieldateien von Version 4, sondern version 3 sucht oder b) ga rnicht mehr die version prüft?[/edit]

Also, ist es möglich, sowas umzuschreiben? Generell, ja, es geht, generell, nein es geht nicht, oder (es kommt auf die datei an).

PS: Wie lange könnte sowas im fall 1 oder 3 dauern?

mfg
euer 3D Studio Max Forum :)
 
klar, gehen tut sowas immer ;)

wie lange sowas dauert, haengt immer ganz davon ab, ob du den quelltext hast oder nicht.
wenn du den hast, dann sollte es ja eigentlich eh kein problem sein - wenn nicht, dann hilft aber nur ein hex-editor und einiges an assembler-kenne.

wie lange es dann dauert, eine anwendung binaer zu patchen, das haengt immer ganz davon ab, wie gross diese anwendung ist - und wie gut man assembler kann. und dann ist noch die frage, ob sich dieser aufwand lohnt :rolleyes:

[edit]
vielleicht sollte ich noch erwaehnen, dass sowas nicht sonderlich legal ist, falls es hier irgendwen interessiert :rolleyes:
[/edit)
 
Zuletzt bearbeitet:
>klar, gehen tut sowas immer
das baut auf :)

>wie lange sowas dauert, haengt immer ganz davon ab, ob du
>den quelltext hast oder nicht.

Ich glaub, wenn ich den Quelltext hätte, hätt ich dass mit meinen "83 Kapitel c++ Kentnissen selbst umschreiben können :) Dem ist leide rnicht so, hab also kein Quelltext.

>dann hilft aber nur ein hex-editor und einiges an
>assembler-kenne.
>wie lange es dann dauert, eine anwendung binaer zu
>patchen, das haengt immer ganz davon ab, wie gross diese
>anwendung ist - und wie gut man assembler kann. und dann
>ist noch die frage, ob sich dieser aufwand lohnt

Ist ne 850 KB grosse Datei, schätz mal ne Zeit :)

[edit]
vielleicht sollte ich noch erwaehnen, dass sowas nicht sonderlich legal ist, falls es hier irgendwen interessiert
[/edit)

Seit dem ich im 3D Forum Mod bin, habe ich das, wass manche Menschen Gewissen nennen, allmählich verloren :) Und in dem Himmel komm ich eh nicht mehr :)

[thx für die schnelle und gute antwort]
 
uff... schaetzen wird schwer, aber ich kann dir sagen, dass du dieses jahr sicher nicht mehr damit fertig wirst :)

deswegen hatte ich auch schon gesagt, dass man selber entscheiden muss, ob sich das lohnt.

http://www.heaventools.com/download.htm - das ding heisst pe-explorer. damit kriegst du aus der anwendung den assembler-code zurueck - da du ja eh kein gewissen mehr hast :)
 
Tja, also mit EXE verändern hast dir ja ganz schön was vorgenommen ;).

Die ganz die harte Tour ist per Hex-Editor die Datei verändern (das PE Format ist irgendwo in der MSDN dokumentiert) -> viel spaß ;-).

Das nächste wäre ein Disassembler -> seeehr viel Assembler-Code

Und das einfachste ein guter Debugger, bei dem du einfach an dem Punkt an dem die Meldung kommt unterbrechen kannst und den Ursprung zurückverfolgen :) (rate mal wie man Cracks erstellt...).

Noch zu sagen wäre das bei den meisten Programmen (eigentlich allen, vor allem bei allen Massenprodukten) die ganze Sache illegal ist...
Und: Versionsabfrage haben meist so ihren Sinn ;).

Im Falle eines Spiels könnte es aber auch sein, dass z.b. irgendwo eine DLL mit dem User Interface rumliegt, v3.0.
In diesem Falle müsste es eigentlich gehen so lange die entsprechenden Dateien mit neuen Versionen zu ersetzen, bis keine Fehlermeldung mehr kommt und hoffen, dass es dann geht.
 
Das schwierige daran ist die Stelle im Assembler Code zu finden, die diese Versionsüberprüfung macht. Wenn du die gefunden hast, ist der Rest ja dann eigentlich nicht mehr so schwer. Meist gibt es dort einen jmp - Befehl, der bei der richtigen Version dann weiterspringt. Dieses würdest du dann einfach in einen jne Befehl ändern (jump not equal = also wenn die Versionen nicht übereinstimmen soll er weiter springen). Und dann mußt du das ganze Zeugs wieder assemblern und fertisch ist deine gecrackte exe. Hört sich einfach an ... ist es aber nicht... :)
 
Deswegen der Debugger :).

Man kann an der Stelle, an der die Meldung aufscheint unterbrechen und den Ursprung zurückverfolgen.
 
Mann, bin beeindruckt, ihr habts ja voll drauf!

>Im Falle eines Spiels könnte es aber auch sein, dass z.b.
>irgendwo eine DLL mit dem User Interface rumliegt, v3.0.
War ne .vm Datei, in ner pk3 Datei gepackt. Das ändern war nicht schwer, nur dann kam wieder der nebeneffekt. Die neue exedatei lief zwar, aber mit der "angeblich" neuen Version, komme ich nicht mehr auf die Servers mit der alten Version.
Also muss die änderung wohl oder übel an der exe-Datei gemacht werden.


>Und: Versionsabfrage haben meist so ihren Sinn
Naja, ich will ja nur ne Art Cheat auf ner älteren Version zum laufen bringen. Auf allen höheren Versionen läufts ja, fuer die älteste Version dummerweiße nicht.

>Hört sich einfach an ... ist es aber nicht...
Sowas in der Art hatte ich mir auch schon gedacht.

Ich habt mir aufjeden Fall schon mal sehr weitergeholfen.
Ich werds aufjeden Fall mal mit den von euch genannten schirtten Versuchen. BIG THANKS
 
So, ich hab die exe Datei der Version 4 jetzt im Pe Explorer geöffnen und einfach mal den schwachsinn disassembeld.
Nach ner Rechenorgie hab ich nun die fertige asm Datei.
*freu*

Als ich diese normal geöffnet hatte und mal aus fun nach dem suchte, was ich eigentlich brauchte, fand ich:

;
;
;------------------------------------------------------------------------------
; Name: roncode
; Virtual Address: 007C1000h Virtual Size: 00010000h
; Pointer To RawData: 000D0000h Size Of RawData: 00010000h
;
L007C1000:
jmp L007C1C97
Align 4 ; [90 90 90]

und dann ne ganze Menge Zahlen :)

Ich hab bisher immernur daran gedacht, die exe Datei von Version4 so umzuschreiben, dass sie nicht mehr nach Version 3 sucht.

Aber, ist es nicht möglich, das da oben (was da so alles steht) einfach in der exedatei von version 3 einzubringen? (also die exedatei von v3 disassablen, den kram dazuschreiben, und daraus wieder ne exe machen?

a) geht das, (ja nein vielleicht). Falls es nicht geht, was wäre der nächste schritt, was muss ich mit der asm datei machen?
 
Zurück