![]() |
Delphi-Version: 2010
Adresse einer privaten Methode bekommen
Hallo,
ist es möglich die Adresse einer privaten Methode zur Laufzeit zu bestimmen? Eine "Hack"/"Dummy"-Klasse kommt in diesem Fall nicht in Frage, da der Code für mehrere Versionen der Klasse arbeiten soll. Ich habe gedacht, dass das bestimmt mit der RTTI geht, aber
Delphi-Quellcode:
gibt leider für private Methoden immer nil zurück.
TRttiType.GetMethod()
Es muss aber einen Weg geben, da Delphi in der CPU-Ansicht den Namen anzeigen kann. Es ist auch möglich per Name zu dieser Funktion zu springen. Grüße, Win32.API |
AW: Adresse einer privaten Methode bekommen
Wozu brauchst du die Adresse einer privaten Methode?
|
AW: Adresse einer privaten Methode bekommen
Funktioniert
Delphi-Quellcode:
?
TMyClass.MethodAddress('MyMethod')
|
AW: Adresse einer privaten Methode bekommen
Das würde ja dem Prinzip des information hiding ( black box) widersprechen
|
AW: Adresse einer privaten Methode bekommen
Das Ganze scheitert schon am Konzept. Du kannst nicht die Adresse einer privaten Prozedur auslesen. Eine private Prozedur ist vom Konzept her (ähnlich wie protected) nur INNERHALB eines Objektes verwendbar. Du kannst sie also auch nicht von außen aufrufen, weil es so aussieht, als würde sie gar nicht existieren. Somit kann sie von RTTI nicht gefunden werden.
Bernhard |
AW: Adresse einer privaten Methode bekommen
Delphi-Quellcode:
liest aber direkt die VMT aus.
MethodAddress
|
AW: Adresse einer privaten Methode bekommen
Vielen Dank für die raschen Antworten :thumb:!
Ich brauche die Adresse um einen Bug in der Komponente zu beseitigen. Mir ist auch klar, dass es gegen das Konzept von OOP geht. Aber leider lässt es sich in diesem Fall nicht verhinden.
Delphi-Quellcode:
gibt leider auch nil zurück.
TMyClass.MethodAddress('MyMethod')
Alle Methoden, egal ob privat oder public, sind nur innerhalb einer Object-Instanz verwendbar (Class Functions/Procesdures und Hacks ausgeschlossen). Ich will sie auch nicht aufrufen sondern sie Hooken. //Win32.API |
AW: Adresse einer privaten Methode bekommen
Zitat:
Hast du den Source der Komponente? |
AW: Adresse einer privaten Methode bekommen
Zitat:
|
AW: Adresse einer privaten Methode bekommen
Zitat:
Nein, der Source liegt leider nicht vor. Zitat:
Also muss an die Funktions Adresse ein:
Code:
gepatch werden.
xor eax, eax
add eax, 1 retn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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 by Thomas Breitkreuz