AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualQueryEx

Ein Thema von Mattze · begonnen am 27. Jul 2015 · letzter Beitrag vom 1. Aug 2015
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

VirtualQueryEx

  Alt 27. Jul 2015, 19:04
Hallo,

ich habe jetzt eine ganze Weile mit VirtualQueryEx gespielt, kriege es aber einfach nicht hin.
Inzwischen bin ich der Meinung, dass das bei mir gar nicht gehen kann!
Ich arbeite unter Windows 7 pro 64 (!!!) mit Delphi 7 pro.
Meine Frage:
Kann ein 32-bit-Programm überhaupt den Speicher unter einem 64-bit-System von einem anderen 32-bit-Programm lesen? (Die Speicheradressen von 64-bit-Programmen können garantiert nicht gelesen werden!)

Und, wenn ja, wie kriege ich von laufenden Prozessen "schnell" raus, ob sie 32- oder 64-bittig sind? Und wie geht das Lesen bei 32-bittigen?

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: VirtualQueryEx

  Alt 27. Jul 2015, 19:54
Kann ein 32-bit-Programm überhaupt den Speicher unter einem 64-bit-System von einem anderen 32-bit-Programm lesen?
Die normale API wird dir ERROR_PARTIAL_COPY zurückgeben vermute ich. Mit diesem Trick sollte es funktionieren:
http://rce.co/knockin-on-heavens-gat...ode-switching/

Ist allerdings recht hacky.

Wenn ich mich recht erinnere gibt es ab Vista (oder Win7) auch die undokumentierte NtWow64QueryVirtualMemory64 API (hier hatte ich mal ein Beispiel zur NtWow64QueryProcessInformation API gebastelt). Ist aber alles nicht wirklich sauber.

Und, wenn ja, wie kriege ich von laufenden Prozessen "schnell" raus, ob sie 32- oder 64-bittig sind?
MSDN-Library durchsuchenIsWow64Process sollte helfen. Wenn unter einem 64 Bit Windows ausgeführt und auf einen 32 Bit Prozess angewendet, ist der Rückgabewert true.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (27. Jul 2015 um 20:01 Uhr)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: VirtualQueryEx

  Alt 27. Jul 2015, 20:36
Hallo,

ich danke Dir für die schnelle und gute Antwort.

Und, ja, O-JE! Ist ja mächtig viel!
Da mich keiner drängelt, kann ich mir das aber alles schön in Ruhe angucken.

Vielleicht klappt es ja, wenn ich das VirtualQueryEx von vornherein nur auf 32-Bit-Prozesse anwende.

Die bessere und sowieso zukunftssichere Variante wäre es bestimmt, sich ein 64Bit-fähiges Delphi zu leisten. Aber da will ich momentan noch nicht so richtig ran, da ich zurzeit "nur" Hobbyprogrammierer bin.
Und dann die ganzen nötigen Anpassungen...

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: VirtualQueryEx

  Alt 27. Jul 2015, 20:52
Die bessere und sowieso zukunftssichere Variante wäre es bestimmt, sich ein 64Bit-fähiges Delphi zu leisten
Genau, das wäre langfristig sicherlich die beste Lösung, wobei die native API vermutlich auch recht zuverlässig ist. Das Heavens Gate würde ich nur als allerletzten Ausweg benutzen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

AW: VirtualQueryEx

  Alt 31. Jul 2015, 16:32
Hallo,

vielen Dank, noch mal!
Klappt seit einer Weile wunderbar.
Es ist wirklich problemlos möglich, mit einem 32Bit-Programm die Speicherbereiche anderer 32Bit-Programme zu ermitteln.
Eigentlich erstaunlich!

Nun bin ich aber auf den Geschmack gekommen und habe mal Dienste probiert.
Da klappt einiges nicht, aber das wird gleich ein neues Thema...

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: VirtualQueryEx

  Alt 1. Aug 2015, 03:16
Nun bin ich aber auf den Geschmack gekommen und habe mal Dienste probiert.
Da klappt einiges nicht
SeDebugPrivilege aktivieren, dann sollte es auch da funktionieren
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#7

AW: VirtualQueryEx

  Alt 1. Aug 2015, 07:07
Hallo Zacherl,

die Debugrechte habe ich mir natürlich gleich zu Anfang gegeben.
Aber...

Siehe meinen letzten Post bei "Dienste und PID" hierselbst.

Gruß
Mattze
  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 04:26 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