(Gelöst) ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Für Fragen von Einsteigern und Programmieranfängern...
Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

(Gelöst) ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

hi leute,
da bin ich wieder mit diese anfängerfrage.
mein betriebssystem: win7 64bit, lazarus v2.0.12


ich möchte ram werte aus einem 64bit process auslesen.
bei 32bit processen lief damit alles wunderbar.(unter delph 7) :D

aber bei einem 64bit process werden nicht alle ram-seiten, also zu wenige, gefunden. :oops:

ist das jetzt nur ein denkfehler von mir?
wenn nein.... gibt es ein anderes MEMORY_BASIC_INFORMATION für diesen zweck? :?:

mfg
lui
Zuletzt geändert von Rentner Lui am Mi 5. Mai 2021, 08:27, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 8643
Registriert: Mo 11. Sep 2006, 19:01

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von theo »

Anfängerfrage <> MEMORY_BASIC_INFORMATION ?
Klingt nach Holzweg für mich. Falls nicht, bist du kein "Anfänger". :wink:

Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

nun, ich habe 1981-82 mit sinclar basic angefangen, danach ms-basic, pascal, delphi jetzt lazarus....
aber ich hatte eine sehr lange pause, ca 18 jahre und fange jetzt wieder damit an.

für euch ist diese obere frage von mir mit sicherheit eine anfängerfrage :)

Benutzeravatar
theo
Beiträge: 8643
Registriert: Mo 11. Sep 2006, 19:01

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von theo »

Rentner Lui hat geschrieben:
Mo 3. Mai 2021, 12:16
für euch ist diese obere frage von mir mit sicherheit eine anfängerfrage :)
Ist es nicht, weil kaum jemand mittels Winapi direkt im Speicher herumfummelt. :mrgreen:
Da muss man schon gute Gründe haben.
Deshalb auch meine Holzweg Vermutung.
Erzähl doch mal, was dein Ziel ist.

Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

mein ziel ist ganz einfach:

ich habe unter delphi 7 viele eigene spiele-trainer geschrieben, einen habe ich veröffentlicht, die anderen habe ich nur für mich benutzt.

daher möchte ich wieder einen neuen trainer, für 64bit spiele, schreiben.

wie schon gesagt, für 32bit spiele ist das kein problem......

deshalb meine vermutung das memory_basic_information nicht auf alle ram-seiten zugreift.

PascalDragon
Beiträge: 301
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von PascalDragon »

Rentner Lui hat geschrieben:
Mo 3. Mai 2021, 12:07
ist das jetzt nur ein denkfehler von mir?
wenn nein.... gibt es ein anderes MEMORY_BASIC_INFORMATION für diesen zweck? :?:
Du hast die Anmerkung auf der entsprechenden MSDN Seite hierzu gelesen?
Hinweis: die dort erwähnten Typen finden sich in der Unit JwaWinNT.
FPC Compiler Entwickler

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4591
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von af0815 »

Es kann dir sicher nur die MS-API Dokumentation zu diesem Thema weiterhelfen. Es wurden generell von MS die 'Angriffsmöglichkeiten' auf andere Prozesse eingeschränkt.

Die Info hier https://docs.microsoft.com/en-us/window ... nformation verweist nur auf die Win32 API
Die hier https://docs.microsoft.com/en-us/window ... nformation wieder nur ab Win10.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

vielen dank für eure hilfe.

aha, dann war meine vermutung richtig.
nun, ist aber doch komisch, alles was ich habe ist 64 bit und damit kann ich nicht (ohne tricks) auf den eigenen speicher zureifen... :
selbst mit vista 64bit hatte ich früher keine probleme unter delphi7, das nur 32bit macht. naja, das spiel war eben nur 32bit

soso 'Es wurden generell von MS die 'Angriffsmöglichkeiten' auf andere Prozesse eingeschränkt.'
hoffentlich kommt MS nicht auf die idee mein schlafzimmer abzusperren :lol:

jetzt werde ich alle eure link's durchlesen, vieleicht werde ich dabei etwas schlauer. :idea:

ich hatte im geheimen gehofft, das es einen anderen befehl gibt der das problem für 64bit processe löst.. :(


nachtrag:
das schaut doch schon einmal recht gut aus:

typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 {
ULONGLONG BaseAddress;
ULONGLONG AllocationBase;
DWORD AllocationProtect;
DWORD __alignment1;
ULONGLONG RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
DWORD __alignment2;
} MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64;





mfg
lui

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4591
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von af0815 »

Jeder Programm wird virualisiert und hat theoretisch Zugriff auf den ganzen Speicher. Die Programme selbst werden somit voneinander isoliert. Das ist auch der Grund warum die Angriffe aktuell auf Punkte gelegt werden, die gemeinsam genutzt werden, das ist mal die CPU und die Cache.

Gerade da hat sich sehr viel getan zwischen 32Bit und 64Bit. Zumindest gleichviel wie früher zwischen Real und Protected Mode, manche Dinosaurier hier (wie ich) kennen das noch (und noch viel ältere Sachen).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

manche Dinosaurier hier (wie ich).......

wilkommen im club :lol:
ich habe mit einem ZX81 angefangen

jedenfalls werden mir eure link's weiterhelfen, da ich jetzt weis wo ich suchen muss.

DANKE :)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4591
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von af0815 »

Rentner Lui hat geschrieben:
Mo 3. Mai 2021, 19:05
ich habe mit einem ZX81 angefangen
TI 57 war der Anfang, mit der ominösen Mondlandung. Auch ZX81, die der Einstieg in die Z80 war. Die 16k Speichererweiterung kostete einen Monatslohn damals. Ja ja die gute alte Zeit (so sagt man).


Es ist auch so, lassen sich die heutigen Spiele eigentlich noch immer so patchen, das man damit einen Spieletrainer machen kann ? Etliche Spiele haben ja ein Anti-Tampering um genausowas zu unterbinden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

ja, ich lach mich kaputt, die speichererweiterung für den zx81 hatte ich auch....... ein kleiner wackler.... und alles war weg, heiss wurde das ding auch noch.
die ladezeit vom band dauerte damit fast 30 min, danach kam oft die meldung: type mitsmasch oder so ähnlich :)
hm, war das bei mir 64k erweiterung? egal....

den tI kenne ich auch noch aber ob das der 57 war, weis ich nicht., da war noch sharp, commondore/brotkasten *kaputtlach* ja war echt eine tolle zeit.

ja, mit den singelplayer spiele geht es noch problemlos, an online spiele fummle ich nicht rum. ich will keine andere spieler schädigen. zudem wäre der weg
zu einem 'hacker' verführerisch, genau deshalb fange ich damit nicht an.

meine trainer funzen nicht mit zeiger, ich habe eine andere methode. da können gameerweiterungen kommen, mein trainer geht dann immer noch.
hier ein link zu meinem alten trainer forum, genau mit diesem x4 game möchte ich wieder einen trainer machen :) (falls das mit dem 64bit klappt)
https://forum.egosoft.com/viewtopic.php ... it=trainer

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4591
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von af0815 »

Grundlegende Idee dazu, der Debugger fpdebug von Lazarus muss ja auch zugreifen können. Auch bei 64 Bit Programmen, vielleicht die Funktionen, wie dort die Variablen ausgelesen werden ansehen. Das würde ja dann auch je nach Betriebssystem funktionieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Rentner Lui
Beiträge: 17
Registriert: Di 27. Apr 2021, 14:34

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von Rentner Lui »

af0815. danke für den tipp, nur davon habe ich null ahnung

aber ich habe etwas interessantes zu dem thema im i-net gefunden, sogar mit source-code, hier ein link:

https://stackoverflow.com/questions/327 ... ory-issues

anscheinend habe auch andere user probleme damit.
bei dieser frage gab es ganz unten eine antwort mit code, schau dir das einmal an...... und was meinst du dazu?

ich werde in dieser richtung weiterarbeiten und hoffe das ding zum laufen zu bringen, allerdings wird dies sehr, sehr viel zeit kosten :(

was ich immer noch nicht verstehe ist dies:
für das erstellen meines trainer, habe ich mir einen ram-editor gebastelt, der läuft problemlos, auch mit den hohen aderssen von 64bit processen.
allerdings muss ich da nicht das ram durchsuchen, sondern nur eine, schon gefundene adresse eingeben. die adresse ermittle ich z.b. mit dem programm: ArtMoney.

Artmoney benutze ich auch zum überprüfen meiner gefundenen trainer adressen . und genau dort ist mir aufgefallen, das meine höchste, gefundene ram-adresse
viel zu klein war.
deshalb meine frage in diesem thread.

PascalDragon
Beiträge: 301
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: ist MEMORY_BASIC_INFORMATION für 64bit processe richtig?

Beitrag von PascalDragon »

Rentner Lui hat geschrieben:
Di 4. Mai 2021, 12:19
aber ich habe etwas interessantes zu dem thema im i-net gefunden, sogar mit source-code, hier ein link:

https://stackoverflow.com/questions/327 ... ory-issues

anscheinend habe auch andere user probleme damit.
bei dieser frage gab es ganz unten eine antwort mit code, schau dir das einmal an...... und was meinst du dazu?

ich werde in dieser richtung weiterarbeiten und hoffe das ding zum laufen zu bringen, allerdings wird dies sehr, sehr viel zeit kosten :(
Wieso? Du schaust ob der Prozess 64-bit ist oder nicht (IsWow64Process in JwaWinBase - True heißt 32-bit(!) Prozess) und verwendest dann entweder MEMORY_BASIC_INFORMATION64 oder MEMORY_BASIC_INFORMATION32 je nach Rückgabewert von IsWow64Process.
FPC Compiler Entwickler

Antworten