2017-07-18 4 views
0

Ich habe vor kurzem festgestellt, dass die 32-Bit-Version von Cheat-Engine hat seinen Thread Environment Block an einer höheren Adresse als die 32-Bit-Adressraum verfügbar ist. Nach meinem Wissen ist der Benutzerbereich nur bis zur Adresse 0x7FFFFFFF zugänglich, aber dieser TEB befand sich bei 0xFFFDB000. Jedes TEB, das ich jemals gesehen habe, begann bei 0x7EFD8000 oder 0x7EFDB000 und nachfolgende TEBs gingen weiter nach unten. Ich nehme an, da Cheat Engine ein Speicherscanner ist, soll es den Scanvorgang vereinfachen. Der Prozessumgebungsblock wurde ebenfalls verschoben. Kann mir bitte jemand sagen wie das möglich ist? Ist dies eine Einstellung in der tragbaren ausführbaren Datei?Wie können sich Thread Environment Blocks über dem Adressraumlimit befinden?

+0

in wow64 Prozess 'ist FFFDB000' möglich und korrekte Adresse – RbMm

+0

@RbMm Es ist in der Tat ein WOW64 Prozess. Ich habe das noch nie bei einem anderen TEB gesehen. Sie scheinen immer bei 0x7EFD8000 oder 0x7EFDB000 zu starten. Was macht dieses Programm so besonders? – Mikubyte

+0

@RbMm Ich benutze Win7 x64. – Mikubyte

Antwort

1

für 32-Bit-Programme zur Verfügung, Adressen 0x00000000-0xFFFFFFFF aber auf x86-Plattform historischer [0x00000000, 0x7FFFFFFF] war User-Space und Kernel-Space. aber auf x64, wo 32bit apps im wow64-subsystem laufen, ist das schon nicht wahr - alle 32bit-bereiche - sind userspace. aber aus Kompatibilitätsgründen System sowieso beschränken Benutzer Adressraum von wow64-Bit-Anwendungen auf 2 GB [0x00000000, 0x7FFFFFFF] standardmäßig. für brechen diese und 4 GB Speicherplatz braucht Flagge

IMAGE_FILE_LARGE_ADDRESS_AWAREDie Anwendung verwenden können Adressen größer als 2 GB verarbeiten. in IMAGE_FILE_HEADER.Characteristics

On 64-bit editions of Windows, 32-bit applications marked with the IMAGE_FILE_LARGE_ADDRESS_AWARE flag have 4 GB of address space available.

Verwandte Themen