AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) ...Methodenzeiger in Funktionszeiger konvertieren?
Thema durchsuchen
Ansicht
Themen-Optionen

...Methodenzeiger in Funktionszeiger konvertieren?

Ein Thema von Luckie · begonnen am 3. Aug 2007 · letzter Beitrag vom 3. Aug 2007
Antwort Antwort
Muetze1
(Gast)

n/a Beiträge
 
#1

Re: ...Methodenzeiger in Funktionszeiger konvertieren?

  Alt 3. Aug 2007, 10:35
Zitat von Luckie:
1: Warum ist der Speicherbereich, der mit GetMem alloziiert wird ausführbar?
Schonmal ausgeführt auf einem Betriebssystem welches das NO-EXECUTION Flag (Intel's name, AMD nennts ein wenig anders) unterstützt? Ich wette, dass läuft dann nicht mehr. (Windows 2003 und aufwärts)

Zitat von Luckie:
2: Warum werden 15 Bytes alloziiert? 4 Byte Code-Zeiger + 4 Byte Daten-Zeiger + 4 Byte Aufruf der Methode + 4 Byte Rückgabewert = 16
In den 15 Bytes legt er mit dem MOV Befehlen 15 Bytes an Code ab, aber keine der o.g. Zeiger/Adressen.

Zitat von Luckie:
3: Warum wird in dem Code alles mit MOV gemacht?
Der Code aus dem anderen Thread zeigt den Push/Pop der aktuell ausgeführt wird bei einem Aufruf. Dieser Code bewegt die Opcodes des (fast) gleichen Code in die 15 Bytes die alloziiert wurden und diese werden dann durchlaufen.

Zitat von Luckie:
4: Könnte mal bitte jemand entsprechend Kommentare einfügen im Code an den Stellen an dem der Code-Zeiger, Daten-Zeiger, der Aufruf und der Rückgabewert in den Speicherbereich kopiert werden? Ich kann leider kein ASM.
Jo, kann ich gerne heute Abend mache, aber wegen den bewegten Opcodes kann ich dir diese nicht dekodieren, da ich die Unterlagen zu Hause habe...

Grundlegend macht der Code aber nur folgendes:

- 15 Bytes alloziieren
- in diesen nacheinander die Opcodes ablegen (welche Self vor dem Aufruf auf den Stack legen)
- Rückgabe der 15 Bytes als Ergebnis. D.h. er springt an den ersten abgelegten Befehl der 15 Bytes und macht genau dies (und im Endeffekt die Methode aufrufen).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 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