Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ReadProcessMemory von 32 bit auf 64 bit Prozess? (https://www.delphipraxis.net/160060-readprocessmemory-von-32-bit-auf-64-bit-prozess.html)

Zacherl 26. Apr 2011 01:26

ReadProcessMemory von 32 bit auf 64 bit Prozess?
 
Hallo,

MSDN-Library durchsuchenReadProcessMemory schlägt ja von einem 32 bit Prozess aus auf einen 64 bit Prozess bekannterweise fehl. Meine Frage ist, ob ich irgendwie durch eine native API eventuell doch Daten aus einem 64 bit Prozess lesen kann?

Hintergrund ist, dass ich alle Modulnamen eines 64 bit Prozesses auflisten möchte.

Meine letzte Rettung sah ich im Auslesen des PEBs mit abschließenden manuellen parsen der ModulList. Allerdings scheint auch MSDN-Library durchsuchenNtReadVirtualMemory den Dienst zu verweigern. Mache ich da was falsch oder gibt es wirklich keine Möglichkeit Daten aus einem 64 bit Prozess zu lesen.

Viele Grüße
Zacherl

himitsu 26. Apr 2011 05:20

AW: ReadProcessMemory von 32 bit auf 64 bit Prozess?
 
Irgendwo im Embarcadero-CodeCentral hatte ich mal soeine 32/64-Bit-Code-Brücke gesehn, womit man von einer 32-Bit-EXE auf eine 64-Bit-DLL zugreifen können soll,

Dort könnte man jamal reinsehn?
Entweder es gibt direkt in dem Code etwas, was dir hierbei hilft,
oder du erstellst dir eine 64-Bit-DLL (z.B. FPC/Lazarus können das ja schon), ließt dort deine gewünschten Daten aus und nutzt diese Brücke, um dieses von deiner 32-Bit-EXE aus aufrufen zu können.

Ansonsten wirst du wohl doch nicht um eine weitere 64-Bit-EXE herumkommen, wobei dort die 64-Bit-Version mit der 32-Bit-Version via IPC miteinander reden uns dich gegenseitig die Daten des Anderen schicken/abrufen können.
Und ein 64-Bit-OutOfProcess-Server sollte auch noch möglich sein.

Daß das normale ReadProcessMemory nicht funktioniert istauch irgendwie klar, denn in deinem 32-Bit-Prozess hat es nur eine 32-Bit-Speicheradressierung (der Adress-Parameter ist ja nur 32 Bit), was für den rießigen Adressraum des 64-Bit-Prozesses nicht ausreicht
und wenn es da keine Version mit einer 64-Bit-Adressierung gibt, dann war's das wohl, mit einem direkten Zugriff.

MarcoWarm 26. Apr 2011 06:06

AW: ReadProcessMemory von 32 bit auf 64 bit Prozess?
 
Zitat:

Zitat von himitsu (Beitrag 1096947)
Irgendwo im Embarcadero-CodeCentral hatte ich mal soeine 32/64-Bit-Code-Brücke gesehn, womit man von eimer 32-Bit-EXE auf eine 64-Bit-DLL zugreifen können soll,


http://cc.embarcadero.com/item/27667


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