2017-07-18 6 views
0

私は最近、32ビットバージョンのチートエンジンが、32ビットアドレス空間で利用可能なものよりも高いアドレスにスレッド環境ブロックを持っていることに気付きました。私の知る限りでは、ユーザー空間はアドレス0x7FFFFFFFまでしかアクセスできませんが、このTEBは0xFFFDB000にあります。私が見たすべてのTEBは0x7EFD8000または0x7EFDB000で始まり、その後のTEBは下向きに続きました。私はCheat Engineがスキャンプロセスを簡素化するためのメモリスキャナであると想定しています。プロセス環境ブロックも移動されました。誰でもこのことがどうなるか教えていただけますか?これはPortable Executableの設定です。 32ビットプログラムのスレッド環境ブロックは、アドレス空間の制限を超えてどのように存在できますか?

+0

IMAGE_FILE_HEADER.Characteristicsに 'FFFDB000'は、それが実際にWOW64プロセスである可能性と正しいアドレス – RbMm

+0

@RbMmです。しかし、これは決して他のTEBに起こるのを見たことはありません。彼らは常に0x7EFD8000または0x7EFDB000で始まるようです。何がこのプログラムを特別なものにするのでしょうか? – Mikubyte

+0

@RbMm私はWin7 x64を使用しています。 – Mikubyte

答えて

1

0x00000000から0xFFFFFFFFに利用可能なアドレスが、x86プラットフォーム上で歴史的[0x00000000, 0x7FFFFFFF]は、ユーザ空間とカーネル空間ました。 32bitアプリがwow64サブシステムで動作するx64では、これはすでに真実ではありません - すべての32bitの範囲 - はユーザスペースです。しかし互換性のあるシステムのために、とにかく、デフォルトでは、wow64ビットアプリケーションのユーザアドレス空間は2GB [0x00000000, 0x7FFFFFFF]に制限されます。以下のためにこれを破り、2ギガバイトを超えるアドレスを処理することができますフラグに

IMAGE_FILE_LARGE_ADDRESS_AWAREアプリケーションを使用する必要が4GBのスペースを持っています。 WOW64プロセスで

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.

関連する問題