Autor Beitrag
K-J
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 03.06.08 06:44 
Hallo!

Ich habe wieder ein Anfängerproblem und es wäre wirklich super, wenn mir jemand dabei helfen könnte...

Ich möchte in meinem Programm eine Funktion einbauen, die in einer Anwendung einen bestimmten String bzw. eine bestimmte HEX-Kette aufspürt und dann die HEX-Kette umschreibt.
Also ganz grob etwa nach folgendem Muster:

"Finde String 01F53C71FF23 und ersetze ihn durch 5590F2E13329"

Könnte mir das eventuell jemand in die Delphi-Sprache umsetzen, damit ich eine Vorlage habe, wenn es nicht zu viel verlangt ist?


Gruß
K-J


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 03.06.2008 um 23:25
GericasS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 540

Windows Vista Home Premium
D2010, VisualStudio2008
BeitragVerfasst: Di 03.06.08 06:57 
Ich glaube da gibt es eine Möglichkeit StringReplace =) einfach mal hinschreiben und F1 drücken.

_________________
Alexander N.
Neue Bewaffnung Amilo xi2428 T9300
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Di 03.06.08 09:36 
Und ich werf mal noch Suche in der Entwickler-Ecke POS in den Raum ;-)

Achja..if blablabla then ist auch nicht zu verachten.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
K-J Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 03.06.08 18:27 
Ich habe mir das mit der StringReplace-Funktion eben gerade mal angeschaut, aber irgendwie bekomme ich das nicht hin (ich befinde mich immernoch auf einem extremen Anfänger-Niveau).

Also mal angenommen, es läuft ein Programm mit dem Window-Titel "Programm1". Nun öffne ich das Programm in einem HEX-Editor, finde einen bestimmten String (z.B. "ABC") und möchte diesen String immer durch "DBC" ersetzen.
Nun möchte ich das aber nicht jedes Mal manuell mit einem HEX-Editor machen, sondern ich möchte, dass mein Delphi-Programm das per Hotkey automatisch macht.

Dazu habe ich dann (bezugnehmend auf "StringReplace") eben gerade mal folgenden Code erstellt, wobei ich glaube, dass ich mir da ein ziemliches Wirrwarr zusammengebastelt habe: :oops:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  WindowName:  integer;
  ProcessID:  integer;
  ThreadId:  integer;
  HandleWindow:  Integer;

Const  WindowTitle  =  'Programm1';

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);

  var
    ABC: String;

  begin
    WindowName  :=  FindWindow(nil,WindowTitle);
      If  WindowName  =  0  then MessageDlg('Window not found',  mtwarning,[mbOK],0);
    ThreadId  :=  GetWindowThreadProcessId(WindowName,@ProcessId);
    HandleWindow  :=  OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);

    ABC := StringReplace(ABC, 'A''D', [rfReplaceAll]); // <-- hier soll in dem Programm nach dem String "ABC" gesucht und das "A" durch ein "D" ersetzt werden
      If  ABC  =  'DBC'  then MessageDlg('String patched',  mtinformation,[mbOK],0)
        else
          MessageDlg('String not found',  mtwarning,[mbOK],0);
  end;

end.


Ich bekomme dann immer die Message "String not found"...

Sorry, dass ich mich so dumm anstelle, aber etwas mehr Hilfe wäre wirkch nett.


Gruß
K-J
fuba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win7
D7 Ent.
BeitragVerfasst: Sa 07.06.08 10:50 
also das müsstest schon genauer erklären...
der string den du ändern willst, ist in einer fremden anwendung, habe ich das richtig verstanden?
Wenn ja, dann müsste man wissen, in welchem "unterfenster" dieser steht (editbox, label, usw...)

sollte das so sein, dann solltest du dir Suche in: Delphi-Forum SENDMESSAGE bzw Suche in: Delphi-Forum POSTMESSAGE ansehen.

Aber einen "einfachen" Befehl wie "StringReplace" gibt es für Externe anwendungen nicht, das währe dann schon bisschen komplizierter ;)

hoffe ich habe dich da jetzt nicht falsch verstanden.

lg. fuba
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 07.06.08 11:07 
Hi,

user profile iconfuba hat folgendes geschrieben:
müsste man wissen, in welchem "unterfenster" dieser steht (editbox, label, usw...)
user profile iconK-J hat folgendes geschrieben:
Nun öffne ich das Programm in einem HEX-Editor
Wie ich das verstehe soll der Speicher der Anwendung nach der
Zitat:
HEX-Kette
des Strings durchsucht werden.

Ich finde übrigens, dass das absolut kein Anfänger-Niveau ist :wink: und nach deinem Quelltext zu urteilen kennst du dich entweder auch schon mit der Syntax von Delphi und entsprechenden Methoden aus oder bist in der Lage, Hilfe und Suchfunktion zu benutzen. 10.000 Punkte in dem Fall :wink:

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)