Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Strings in EXE verändern (https://www.delphipraxis.net/57458-strings-exe-veraendern.html)

Mystic 21. Nov 2005 18:04


Strings in EXE verändern
 
Ich suche eine Möglichkeit Strings (keine Ressourcen) in einem bereits kompiliertem Programm zu modifizieren.

Die Stringlänge verändert sich dabei, sonst wärs ja einfach. :roll:

brechi 21. Nov 2005 18:15

Re: Strings in EXE verändern
 
nimmste du einfach pchars

die werden mit nem #0 beendet
musst nur nen langen vorgespeicherten string nehmen

Mystic 21. Nov 2005 19:18

Re: Strings in EXE verändern
 
Das Problem ist, das die Strings im Programmcode eingebettet sind. Wenn ich jetzt einfach die Länge des Strings verändern würde (per Hexeditor), dann würden ja alle Jumps, die auf eine Adresse nach dem String zeigen, nach der Änderung nicht dahin zeigen, wo sie hinzeigen sollen (Ich hoffe ihr versteht mich ;)).

brechi 21. Nov 2005 19:33

Re: Strings in EXE verändern
 
nein solange der speicher des strings nicht vergrößert wird funktioniert das

nehmen wir an die EXE beinhaltet den String

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

dann kannst du den einfach durch z.b.

Hallo#0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ersetzen (wobei #0 nich '#0' sondern hexwert 0 darstellt)

hast du es vorher als

var bla: pchar = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
deklariert geht das da #0 das ende des strings bedeutet

Mystic 21. Nov 2005 19:38

Re: Strings in EXE verändern
 
Das Problem ist aber das ich den String vergrößern muss. :P

omata 21. Nov 2005 19:46

Re: Strings in EXE verändern
 
Ja, das kannst du doch auch.
Die Idee von brechi ist doch einfach einen langen String bei der Kompilierung in die EXE zu schreiben. Dann kannst du deinen String verkleinern und später auch wieder verlängern. Allerings eben nur soweit verlängern, wie du bei der Kompilierung maximal zugelassen hast.

Anders wird das nicht gehen.

MfG
Thorsten

Mystic 21. Nov 2005 19:48

Re: Strings in EXE verändern
 
Ich besitze nur die EXE und nicht den Sourcecode.

brechi 21. Nov 2005 19:50

Re: Strings in EXE verändern
 
dann wirds nicht ohne viel arbeit (debuggen etc.) gehen

Luckie 21. Nov 2005 19:52

Re: Strings in EXE verändern
 
Zitat:

Zitat von Mystic
Ich besitze nur die EXE und nicht den Sourcecode.

Dann stellt sich die Frage, ob du das überhaupt darfst und warum du das machen willst.

Mystic 21. Nov 2005 19:53

Re: Strings in EXE verändern
 
Ist es denn nicht möglich den Code zu disassemblieren, die Strings zu ändern, und dann wieder zu reassemblieren?

Zitat:

Zitat von Luckie
Dann stellt sich die Frage, ob du das überhaupt darfst und warum du das machen willst.

Muss ich das jetzt hier alles erläutern? Ich kann euch versichern, das ich nichts Illegales vorhabe.

brechi 21. Nov 2005 19:57

Re: Strings in EXE verändern
 
ohne ein bisschen kenntnisse mit assembler und dem aufbau einer exe wirste das nicht hinbekommen,
würdest du das wissen, würdest hier nicht fragen - von daher wirste das wohl nicht schaffen

Mystic 21. Nov 2005 19:59

Re: Strings in EXE verändern
 
Das ist schlecht. Sehr schlecht. :(

Flocke 21. Nov 2005 19:59

Re: Strings in EXE verändern
 
Wenn an der Stelle, an der der String steht, nicht genug Platz ist, dann schreibe ihn doch woanders hin (z.B. an das Ende des Code-Section, da ist normalerweise der Rest der 4K-Page unbenutzt). Du musst dann nur mit 'nem Disassembler alle Verweise auf die alte Adresse finden und auf die neue umbiegen.

Aber wie brechi schon schreibt - du solltest wissen was du tust.

Mystic 21. Nov 2005 20:06

Re: Strings in EXE verändern
 
Soweit ich das hier erkennen kann werden die Adressen der beiden Strings die ich verändern muss nur jeweils einmal benutzt - in einer push-Anweisung.

brechi 21. Nov 2005 20:08

Re: Strings in EXE verändern
 
dann mussu die push anweisung ändern zu dem bereich wo du den string hinkopiert hast

Mystic 21. Nov 2005 20:14

Re: Strings in EXE verändern
 
Der Code-Block startet bei 01000h und hört bei 53FFFh auf - kann ich danach gefahrlos die Strings anhängen?

Hansa 21. Nov 2005 20:17

Re: Strings in EXE verändern
 
Wenn der string in der EXE drin ist und nicht in INI usw., dann ist es mit Sicherheit nicht erwünscht daran was zu ändern. Würdest du bei einem Programm von mir sowas machen, dann würde es dir um die Ohren fliegen. Laufen würde es nicht mehr. Die Frage würde dann nur etwas anders lauten : "Ich habe einen String geändert und mein Programm geht jetzt nicht mehr". Mehr sag ich nicht. :mrgreen: Es gibt ganz einfache Mittel, auf so etwas zu regieren und/oder das Datum festzuhalten. 8)

Mystic 21. Nov 2005 20:26

Re: Strings in EXE verändern
 
Sag lieber, es war nicht vorauszusehen. :P Jedenfalls ist die Änderung nötig, und ich kann den Programmierer von dem Programm nicht mehr erreichen (untergegangen? :drunken: ), und bin jetzt wohl gezwungen das ganze selbst zu ändern.

Zitat:

Zitat von Hansa
Es gibt ganz einfache Mittel, auf so etwas zu regieren und/oder das Datum festzuhalten. 8)

Ich versteh nicht ganz, worauf du hinauswillst. :?

brechi 21. Nov 2005 20:38

Re: Strings in EXE verändern
 
zieh dir olly
pack den string mitm hexeditor ganz an den schluss der EXE (wo die ganzen 00en sind)
starte exe mit olly und schau wo der string im speicher ist (oder rechne es selbst über die sections um)

pushe die neue adresse anstatt der alten

Mystic 21. Nov 2005 20:49

Re: Strings in EXE verändern
 
Habs jetzt glaube ich mit einem Hexeditor spartanischster Art (richtig karg) geschafft...
  • Am Ende des Code-Blockes waren eine Menge 00, meine neuen Strings dahin geschrieben
  • Adressen der neuen Strings in die Push-Anweisungen geschrieben


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz