Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi exe zur lauzeit ändern... (https://www.delphipraxis.net/24329-exe-zur-lauzeit-aendern.html)

Meflin 15. Jul 2004 16:55

Re: exe zur lauzeit ändern...
 
öhm nö das ist ne ganz andere baustelle. konstanten werden via const deklariert und lassen sich nie ändern, es sei denn eben über einen hexeditor.

Rackergen2 15. Jul 2004 16:58

Re: exe zur lauzeit ändern...
 
Zitat:

Zitat von Meflin
konstanten werden via const deklariert und lassen sich nie ändern, es sei denn eben über einen hexeditor.

Delphi-Quellcode:
const Variable: string = 'Text';
Die lässt sich zur Laufzeit sehr wohl ändern... Habe den text oben editiert, lies!

Meflin 15. Jul 2004 16:59

Re: exe zur lauzeit ändern...
 
ja und? beim nächsten start ists wieder der alte wert und darum gehts wohl hier.

The-X 15. Jul 2004 17:00

Re: exe zur lauzeit ändern...
 
Zitat:

Zitat von Rackergen2
Texte, die aber durch Programmcode geschrieben werden, lassen sich nur per Disassembler/Debugger (Ich bevorzuge letzteres) oder Hexeditor verändern...

:wiejetzt: mit einem DisAssembler/Debugger kannst du höchstens rasufinden wo diese Texte generiert werden, ändern aber im Normalfall nicht, jedenfalls ist mir kein Programm bekannt mit dem das möglich ist...

mit dem Debugger kannst du unter Umständen während der Laufzeit stellen im Code ändern :)

Alle Angaben ohne Gewähr :)

Und Stringkonstanten können über die ResourceString direktive (wie der Name schon sagt) in den Resourcen abgelegt werden, sonstige Konstanten werden AFAIK im Speicher im sog. Stackgegment gelagert und in der Exe itself zwischen Header und dem Programmeinsprungspukt gespeichert... bzw je nach Kompiler auch nach dem Code.

Luckie 15. Jul 2004 17:00

Re: exe zur lauzeit ändern...
 
Aber nur, wenn du
Zitat:

Assignable typed constant Enable this for backward compatibility with Delphi 1.0. When enabled, the compiler allows assignments to typed constants. Corresponds to
aktiviert hast. Diese Option führt aber meiner Meinung nach den Sinn von Konstanten ad adsurdum. :roll:

The-X 15. Jul 2004 17:02

Re: exe zur lauzeit ändern...
 
Zitat:

Zitat von Luckie
Diese Option führt aber meiner Meinung nach den Sinn von Konstanten ad adsurdum. :roll:

Sind auch eigentlich somit keine Konstanten mehr, sondern Variablen mit einem vordefinierten Wert ;)

Meflin 15. Jul 2004 17:04

Re: exe zur lauzeit ändern...
 
jaja aber Rackergen2 will uns hier nur das prinzip beweisen scheint mir auch wenns darum garnicht geht :roll:

the_seed 15. Jul 2004 18:08

Re: exe zur lauzeit ändern...
 
hier mal die logs ...
nachdem ich das problem gschildert habe...
Zitat:

[4:20] (the_seed) so
[4:20] (...) das erste strück hätt ich fertig - das ist zum anhängen - hoffe es geht - getestet hab ich nix
[4:20] (...) Type THead=Record
[4:20] (...) Ident:String[67];
[4:20] (...) <pack hier einfach deine konfigdaten rein - achte darauf das du strings immer begrenzt
[4:20] (...) du kannst strings auch unbegrenzt lassen - aber dann würde ich dir empfehlen
[4:20] (...) alle daten einzeln zu schreiben>
[4:20] (...) End;
[4:20] (...) Procedure TForm1.Modify(First,New:String);
[4:20] (...) Var F:TFileStream;
[4:20] (...) I:Integer;
[4:21] (...) Read:String;
[4:21] (...) Head:THead;
[4:21] (...) FileDef:Array Of TFileDef;
[4:21] (...) var
[4:21] (...) NumRead, NumWritten: Integer;
[4:21] (...) Buf: array[1..2048] of Char;
[4:21] (...) Buf2:String;
[4:21] (...) FromF,ToF:TFileStream;
[4:21] (...) begin
[4:21] (...) FromF:=TFileStream.Create(First,fmOpenRead or fmShareDenyNone);//der blanke server ohne cfg infos
[4:21] (...) ToF:=TFileStream.Create(New,fmCreate or fmShareDenyNone);//die neue datei (server+config)
[4:21] (...) ToF.CopyFrom(FromF,0);
[4:21] (...) begin
[4:21] (...) FromF:=TFileStream.Create(First,fmOpenRead or fmShareDenyNone);//der blanke server ohne cfg infos
[4:21] (...) ToF:=TFileStream.Create(New,fmCreate or fmShareDenyNone);//die neue datei (server+config)
[4:21] (...) ToF.CopyFrom(FromF,0);
[4:21] (...) Head.Ident:='Head Signatur';//wichtig damit du das ding wieder findest
[4:21] (...) Head.RunFirst:=Edit3.Text;
[4:21] (...) Head.RunSecond:=ExtractFileName(ComboBox1.Text);
[4:21] (...) Head.FileCount:=Form1.ListBox1.Items.Count;
[4:21] (...) ToF.Seek(0, soFromEnd);
[4:21] (...) ToF.Write(Head,SizeOf(Head));
[4:21] (...) ToF.Free;
[4:21] (...) FromF.Free;
[4:21] (...) end;
[4:24] (...) Procedure ReadConfig;
[4:24] (...) Var F:TFileStream;
[4:24] (...) Head:THead;
[4:24] (...) Begin
[4:24] (...) F:=TFileStream.Create(application.ExeName,fmShareD enyRead);//wie du siehst wird hier der server geöffnet
[4:24] (...) F.Seek(0,SoFromEnd);
[4:24] (...) F.Position:=F.Position-SizeOf(Head);//thead muss auch im server bekannt sein
[4:24] (...) F.Read(Head,SizeOf(Head));//fertig - die daten müssten nun zur verfügung stehen
[4:24] (...) F.Free;
[4:24] (...) End;
[4:24] (...) so
[4:24] (...) das ist für den server
[4:24] (...) zum auslesen der daten
[4:24] (...) das andere ist zum schreiben der daten
[4:25] (the_seed) wie kann ich aber auf die einzelnen werte zugreifenß
[4:25] (...) also hm du hast das dann ja in nem array
.[4:25] (the_seed) ok
[4:26] (the_seed) ich werds irgendwie hinkriegen... thx
[4:26] (...) ich hab hier das array head genannt - kannst du auch anders nennen - du kannst in den head array alles reinpacken was du willst
[4:26] (...) ich habs in der erste routine schon geschreiben wie du mit strings umgehen musst
[4:26] (...) weil strings ohne echtes ende sind nicht gut ^^
[4:27] (...) die musst du begrenzen mit [zahl] - oder du schreibst sie halt mit ner längenangabe rein - das ist aber aufwändig


Vjay 15. Jul 2004 18:20

Re: exe zur lauzeit ändern...
 
ssed was du da machst hat mit dem was du in deinem ersten post beschrieben hast NICHTS zu tun.

du hängst daten an die exe dran, genausogut kannst du die daten an eine jpeg-datei anhängen ;) das das geht ist doch logisch.

*edit: Und wie das geht dürfte den meisten auch geläufig sein.

PS strings mit unbegrenzter länge kannst du ganz einfach in streams schreiben indem du 4 byte mit der länge des strings vorweg schreibst und beim einlesen ausliest + mit setlength den string vorher setzt.

Allet klar?

the_seed 15. Jul 2004 18:25

Re: exe zur lauzeit ändern...
 
Zitat:

Zitat von Vjay
ssed was du da machst hat mit dem was du in deinem ersten post beschrieben hast NICHTS zu tun.

du hängst daten an die exe dran, genausogut kannst du die daten an eine jpeg-datei anhängen ;) das das geht ist doch logisch.

*edit: Und wie das geht dürfte den meisten auch geläufig sein.

PS strings mit unbegrenzter länge kannst du ganz einfach in streams schreiben indem du 4 byte mit der länge des strings vorweg schreibst und beim einlesen ausliest + mit setlength den string vorher setzt.

Allet klar?

warum? wenn ich die daten "in eine exe" schreibe, und sie verändern bzw. lesen kann ... kommt es doch auf das hinuas was ich anfnags wollte...
eine "zur laufzeit änderbare exe" wie bei den vielzähligen trojaner ... man benötigt nur noch einen "edit server".


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Seite 2 von 3     12 3      

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