Wie viele Bits der Speicheradresse werden von ASLR in 32- und 64-Bit-Linux und Windows randomisiert

1036

Wie viele Bits der Speicheradresse werden von ASLR in 32 und 64 Bit Linux und Windows randomisiert? Bitte geben Sie einige Beispiele.

0

1 Antwort auf die Frage

0
David Marshall

Das Folgende wurde aus einem Technet-Artikel extrahiert, der zusätzliche Informationen enthält.

Vor Windows 8 erhielten ausführbare 64-Bit-Images die gleiche Entropie, die verwendet wurde, wenn 32-Bit-ausführbare Images randomisiert wurden (8 Bit oder eine Chance von 1 zu 256, richtig zu raten). Die auf 64-Bit-Bildern angewendete Entropie wurde in den meisten Fällen ab Windows 8 deutlich erhöht:

DLL images based above 4 GB: 19 bits of entropy (1 in 524,288 chance of guessing correctly) DLL images based below 4 GB: 14 bits of entropy (1 in 16,384 chance of guessing correctly).  EXE images based above 4 GB: 17 bits of entropy (1 in 131,072 chance of guessing correctly). EXE images based below 4 GB: 8 bits of entropy (1 in 256 chance of guessing correctly). 

Der Grund für die Entropieunterschiede aufgrund der Basisadresse eines Bildes ist wiederum aus Kompatibilitätsgründen. Der Windows-Kernel verwendet derzeit die bevorzugte Basisadresse eines Images als Hinweis, um zu entscheiden, ob das Image eine Basis von mehr als 4 GB unterstützt. Bilder, die unter 4 GB liegen, wurden möglicherweise nicht in Szenarien getestet, in denen sie über 4 GB verschoben wurden, und können daher Probleme mit dem Abbruch latenter Zeiger haben. Daher versucht der Windows-Kernel nach besten Kräften sicherzustellen, dass diese Images weniger als 4 GB laden. Aufgrund dieser Einschränkungen basiert die große Mehrheit der 64-Bit-EXE- und DLL-Dateien in Windows 8 und Windows 8.1 auf über 4 GB, um sicherzustellen, dass sie von der höchstmöglichen Entropie profitieren. 64-Bit-Bilder, die von der Visual C ++ - Werkzeugkette erstellt werden, basieren standardmäßig auch auf Images mit mehr als 4 GB.