Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Adresse von Prozess ändern (https://www.delphipraxis.net/169894-adresse-von-prozess-aendern.html)

SyntaxXx 19. Aug 2012 22:51

Adresse von Prozess ändern
 
Guten Abend,
und zwar wollte ich fragen, ob und wenn ja ich Adressen von Progammen in Delphi ändern kann?

Ich hab mir jetzt mit einem anderen Programm ein paar Adressen anzeigen lassen, die verschiedene Werte haben.
Diese möchte ich jetzt abändern.

Da ich aber garkeine Ahnung hab wie ich anfangen soll, erbitte ich hier Hilfe.

Vielen Dank schonmal

himitsu 19. Aug 2012 23:23

AW: Adresse von Prozess ändern
 
$12346578 hier hast du eine Adresse, leg sie in eine Pointer-Variable und du kannst die Adresse ändern.

MSDN-Library durchsuchenWriteProcessMemory

Aber laß dir gesagt sein, daß es recht selten vorkommt, daß der Speicher für etwas Bestmmtes immer an der selben Adresse liegt.
Also die Arbeit mit statischen/festen Adressen ist nicht immer richtig.

SyntaxXx 20. Aug 2012 06:30

AW: Adresse von Prozess ändern
 
Ok, vielen Dank erstmal.
Kann ich auf die Art auch den Wert ändern, auf die die Adresse zeigt?

Neutral General 20. Aug 2012 08:19

AW: Adresse von Prozess ändern
 
Hallo,

Ich weiß nicht genau was du genau willst. Du kannst eine Adresse in eine Pointer-Variable laden (u.a.).

Delphi-Quellcode:
var p: Pointer;
    Rec: TIrgendeinRecord;
begin
  p := Pointer($12345678);
  p := @Rec;
  // oder irgendwie anders
end;
Diese Variable kannst du nun (je nach Einstellungen) (fast) wie eine Integer-Variable verändern. Also auch die darin gespeicherte Adresse.

Den Wert der hinter dieser Adresse steht kannst du entweder per MSDN-Library durchsuchenWriteProcessMemory ändern (meistens für Adressen in anderen Prozessen als dem eigenen verwendet) oder indem du einen typisierten Pointer dereferenzierst.

Bsp:

Delphi-Quellcode:
var Adresse: PInteger; // Pointer auf einen Integer;
    Wert: Integer;
begin
  Adresse:= Pointer($12345678);
  Wert := PInt^;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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