Autor |
Beitrag |
K-J
Hält's aus hier
Beiträge: 13
|
Verfasst: 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 Narses: Topic aus Sonstiges (Delphi) verschoben am Di 03.06.2008 um 23:25
|
|
GericasS
      
Beiträge: 540
Windows Vista Home Premium
D2010, VisualStudio2008
|
Verfasst: 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
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Di 03.06.08 09:36
Und ich werf mal noch 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 
Hält's aus hier
Beiträge: 13
|
Verfasst: 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:
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 public 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]); 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
      
Beiträge: 125
Win7
D7 Ent.
|
Verfasst: 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 SENDMESSAGE bzw 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
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Sa 07.06.08 11:07
Hi,
fuba hat folgendes geschrieben: | müsste man wissen, in welchem "unterfenster" dieser steht (editbox, label, usw...) |
K-J hat folgendes geschrieben: | Nun öffne ich das Programm in einem HEX-Editor |
Wie ich das verstehe soll der Speicher der Anwendung nach der des Strings durchsucht werden.
Ich finde übrigens, dass das absolut kein Anfänger-Niveau ist  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
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)
|
|
|