Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.211 Beiträge
 
Delphi 12 Athens
 
#8

AW: RTL Fehler beheben - System.pas

  Alt 28. Jul 2023, 16:34
Zitat:
Write(i:5)
Das hier ist ja auch noch CompilerMagic, wo der Compiler das eine "Write" auf einen/mehrere einzelne Befehle verteilt/umleitet.


Im Grunde erstellt man eine neue Funktion, mit dem gewünschten Inhalt.

Dann werden die ersten Bytes (meistens 5) in der originalen Funktion überschrieben, z.B. mit einem JMP (Assembler-Jump) zur neuen Funktion.
(vorher noch den Schreibschutz des Arbeitsspeichers, an dieser Stelle deaktivieren und nachher wieder herstellen)

Es gibt dafür auch mehrere Hook-Frameworks/Funktionen/..., von verschiedensten Leuten, falls man es nicht manuell machen will.

Aufwändiger wird es z.B. bei "externen" Funktionen der WinAPI, wo man stattdessen die Importtabelle (Zeiger) umschreiben kann, anstatt die Funktion selbst zu überschreiben. (muß man nur aufpassen, wenn man auch noch andere DLLs/Packages hat, die auch darauf zugreifen sollen)
Oder eben auch, wenn man selber mit Laufzeitpackages arbeitet, dann das sind ja auch nur DLLs, wo @DieGewünschteFunktion auf die ImportTabelle zeigt (welche aus vielen JMP-Befehlen besteht) und eben nicht direkt auf die Funktion.
$2B or not $2B
  Mit Zitat antworten Zitat