AGB  ·  Datenschutz  ·  Impressum  







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

ASLR und HighEntropy - Probleme

Ein Thema von Harry Stahl · begonnen am 6. Nov 2022 · letzter Beitrag vom 8. Nov 2022
 
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#1

ASLR und HighEntropy - Probleme

  Alt 6. Nov 2022, 14:20
Habe mit Delphi 11.2 jetzt eine Anwendung für 64-Bit Windows kompiliert und festgestellt, dass es eine Schutzverletzung für diesen code gibt:

Delphi-Quellcode:
{$J+}
procedure DrawDots (x, y: Integer; c: TCanvas); StdCall;
const
  Counter: Byte = 0;
begin
  counter := counter shl 1;

  if counter = 0 then counter := 1;

  case counter of
    1, 2, 4, 8 : C.pixels[x,y] := clWhite;
  else
    C.pixels[x, y] := clBlack;
  end;
end;
{$J-}

procedure hs_Rectangle (c: TCanvas; x1, y1, x2, y2: Integer);
begin
  LineDDA (x1, y1, x2, y1, @DrawDots, LongInt (C));
  LineDDA (x1, y1, x1, y2, @DrawDots, LongInt (C));
  LineDDA (x1, y2, x2, y2, @DrawDots, LongInt (C));
  LineDDA (x2, y1, x2, y2, @DrawDots, LongInt (C));
end;
Standardmäßig war hier die Option "High-Entropy für 64 Bit-ASLR (Adress Space Layout Randomization) aktiviert.
Wenn man diese Option ausschaltet, läuft wieder alles ohne Probleme.

Alternativ kann man das hier auch fixen (muss man auch), indem man statt "LongInt" "INT64" verwendet.

Ich muss gestehen, das ist so eine Art old legacy code, den ich irgendwann mal irgendwo kopiert habe und mir darüber dann keine weiteren Gedanken mehr gemacht habe.

Unter Win32 ist das mit LongInt kein Problem, da ja jedes Programm eh nur 2GB Adressraum zur Verfügung hat (mal abgesehen von dem Trick es auf 3 GB zu puschen). Unter Win64 habe ich bislang kein Problem gehabt, wahrscheinlich liegen im Compilat bzw. auf dem Heap caller und aufgerufende Funktion immer nah genug zusammen.

Mit der ALSR High Entrpoie Funktion wird aber anscheinend die aufgerufene Funktion in einen Adressbereich > 2GB verschoben, so dass es dann kracht.

Auch wenn man das hier leicht fixen kann, ich habe ASLR high-entropie erst mal ausgeschaltet. Mein PixPower" Programm hat inzwischen mehr als 1 Mio Zeilen Source-Code, davon eine Reihe von Dritt-Komponenten und old legagy code, da ist eher anzunehmen, dass dort ähnliche Hunde begraben liegen.

Wollte mit dieser Info mal auf die Problematik aufmerksam machen und fragen, ob Ihr evtl. auch schon ähnliche Stolperstellen diesbezüglich gefunden habt. Vom Compiler gab es übrigens keine Warnung oder Hinweis...
  Mit Zitat antworten Zitat
 


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:05 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