![]() |
exe zur lauzeit ändern...
hi, habe bei nem trojaner gesehn das man die mithilfe von edit server eine bestehende exe ändern kann??? wie geht das?
das ich zb. eine exe hab wmoit ich eine andere ändern kann und die geänderten werte gesepichert werden ohne hilfe von externen files? |
Re: exe zur lauzeit ändern...
es werden entweder nur mit Updateressource die ressourcen geändert oder die exe wird eben gepatcht. am einfachste ist dies in dem man zum beispiel konstanten setzt und dann mit hilfe des Hexeditors prüft an welcher stelle sich die Konstanten dann in der Kompilierten Exe befinden. Dann ist es auch kein Problem mehr an genau dieser stelle in der Exedatei die Zeischen (Konstante) zu ändern
|
Re: exe zur lauzeit ändern...
weiss den niemand eine möglichkeit ?
dass man die werte einer exe ohne externes file nach dem compilieren änder kann ??? |
Re: exe zur lauzeit ändern...
ähm das hat sir doch schon geschrieben. du musst das teil beenden, patchen und wieder starten. zum patchen musst du die binärcodes wissen und ändern. hast du schon mal die forumssuche bemüht?
|
Re: exe zur lauzeit ändern...
Zitat:
nur gibt es irgend ne möglichkeit die strings zu ändern ohne gleich die die hexwerte zu ändern !? |
Re: exe zur lauzeit ändern...
nein die gibt es wohl eher nicht. sobald ein prog compiliert ist kannst du es als exe nur noch über dessen binärcode verändern, also praktisch das, was man mit einem hexeditor macht. dazu musst du die offset adresse der konstante wissen. zu beachten ist, dass der neue wert nie länger sein darf wie der alte, da sonst programmcode überschrieben wird, wenn du den rest nicht entsprechend mitänderst.
|
Re: exe zur lauzeit ändern...
Zitat:
|
Re: exe zur lauzeit ändern...
Zitat:
Texte, die aber durch Programmcode geschrieben werden, lassen sich nur per Disassembler/Debugger (Ich bevorzuge letzteres) oder Hexeditor verändern... |
Re: exe zur lauzeit ändern...
ja aber hier geht es wohl doch um konstanten und erzähl mir nicht die wären als resourcen gespeichert...
|
Re: exe zur lauzeit ändern...
Sind Komponenten keine Konstanten? Und du hast geschrieben, mann könne die EXE nur per Hexeditor verändern und müsse dann auf das und das achten. Ich habe es eben nur dementiert...
Sprich, es ging nicht um Konstanten sondern um die EXE allgemein... und zu den EXEn gehören eben auch Formulare... |
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.
|
Re: exe zur lauzeit ändern...
Zitat:
Delphi-Quellcode:
Die lässt sich zur Laufzeit sehr wohl ändern... Habe den text oben editiert, lies!
const Variable: string = 'Text';
|
Re: exe zur lauzeit ändern...
ja und? beim nächsten start ists wieder der alte wert und darum gehts wohl hier.
|
Re: exe zur lauzeit ändern...
Zitat:
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. |
Re: exe zur lauzeit ändern...
Aber nur, wenn du
Zitat:
|
Re: exe zur lauzeit ändern...
Zitat:
|
Re: exe zur lauzeit ändern...
jaja aber Rackergen2 will uns hier nur das prinzip beweisen scheint mir auch wenns darum garnicht geht :roll:
|
Re: exe zur lauzeit ändern...
hier mal die logs ...
nachdem ich das problem gschildert habe... Zitat:
|
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? |
Re: exe zur lauzeit ändern...
Zitat:
eine "zur laufzeit änderbare exe" wie bei den vielzähligen trojaner ... man benötigt nur noch einen "edit server". |
Re: exe zur lauzeit ändern...
Bei deinem Ausgangsposting hat sich das so angehört, als wolltets du direkt Wertein der Exe ändern. Was fdu jetzt vorhast it ja nur ein Anhängen und Auslesen von Dateien.
|
Re: exe zur lauzeit ändern...
Zitat:
aber im endeffekt das gleiche :thuimb: |
Re: exe zur lauzeit ändern...
Liste der Anhänge anzeigen (Anzahl: 1)
Unter dem Gesichtspunkt dass hier schon genug gestritten wurde sage ich einfach mal: ja
*Edit* PS ich hab vor einiger Zeit mal nen Stream an Datei-Anhänger gebastelt. Weiss aber nicht ob der 100% geht. Es gibt 2 Funktionen 1x zum Lesen und 1x zum Schreiben. Eine Datei kann mehrere Streams enthalten die über ihren Namen angesprochen werden. Und wie du deine Records / Klassen in die Streams bekommst musst du selber wissen / VCl-Benutzen. Hoffe hilft dir weiter. |
Re: exe zur lauzeit ändern...
Ist eben nicht das gleiche.
|
Re: exe zur lauzeit ändern...
Zitat:
:mrgreen: |
Re: exe zur lauzeit ändern...
tja aber um da ran zu kommen musst du die datei mindestens temporär extrahieren, also nicht ohne externe files. oder irre ich mich da?
|
Re: exe zur lauzeit ändern...
so, hab mich jetzt mal dahinter gemacht wie man streams an files anhängen kann - da ich es selber machen mmöchte :)
nur mein problem ist das wenn ich etwas anhänge dass das komplette file überschrieben wird - hab den source aus nem tut von delphi-source.de
Code:
kann mir jmd helfen?
type
Tsave = class(TForm) save: TButton; procedure saveClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var save: Tsave; implementation {$R *.dfm} type Tdatensatz=record id:integer; name:ansistring; end; tdatenarray = array of tdatensatz; procedure Tsave.saveClick(Sender: TObject); var daten:tdatenarray; stream:tstream; i:integer; len:longint; begin setlength(daten,2); daten[0].id:=1; daten[0].name:='ein name'; daten[1].id:=2; daten[1].name:='ein andrer name'; stream:=tfilestream.create('c:\rechner.exe',fmcreate); try len:=length(daten); stream.write(len,sizeof(len)); for i:= 0 to length(daten) - 1 do begin stream.write(daten[1].id, sizeof(daten[i].id)); len:=length(daten[i].name); stream.write(len, sizeof(len)); stream.write(pchar(daten[i].name)^,len); end; finally stream.free; end; end; end. |
Re: exe zur lauzeit ändern...
Wie wäre es den Dateizeiger hinter deine Exe zu setzten, damit die Datei angehangen wird?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr. |
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-2025 by Thomas Breitkreuz