Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi "$SetPeFlags 40", was ist das? (https://www.delphipraxis.net/194903-%24setpeflags-40-ist-das.html)

Fukiszo 18. Jan 2018 02:07

"$SetPeFlags 40", was ist das?
 
Guten abend/morgen!

Kann mir jemand sagen was die #40 bewirkt?
Den rest hab ich bereits lösen konnen, aber falls ich da was falsch hab, bitte korrigiert mich.


// ATTENTION: ONLY USE THOSE FLAGS IN YOUR .DPR FILE !!! (can be the first lines above "PROGRAM")
{ the "Lo" Flags: }
{$SetPEFlags $0001} // Relocations Stripped
{$SetPEFlags $0002} // Executable
{$SetPEFlags $0004} // Line mumbers stripped
{$SetPEFlags $0008} // Symbols stripped
{$SetPEFlags $0010} // Agressivly trim set
{$SetPEFlags $0020} // handle > 2GB addresses (default for x64 bit architecture?)
{$SetPEFlags $0040} // ?
{$SetPEFlags $0080} // Bytes reversed lo
{ the "Hi" Flags: }
{$SetPEFlags $0100} // 32 bit machine
{$SetPEFlags $0200} // Debug stripped
{$SetPEFlags $0400} // Patch on removable
{$SetPEFlags $0800} // Patch on net
{$SetPEFlags $1000} // System driver
{$SetPEFlags $2000} // It's a DLL
{$SetPEFlags $4000} // Uniprocessor only
{$SetPEFlags $8000} // Bytes reversed hi

Ps: ich hab nicht vor, abgesehen von #20, diese flags zu setzen, ich benötige es für ein PE-tool.

Dalai 18. Jan 2018 04:01

AW: "$SetPeFlags 40", was ist das?
 
Da selbst MS keine Konstante für diesen Wert definiert hat (siehe LOADED_IMAGE structure), wird das undefiniert bzw. unbenutzt oder reserviert sein.

Übrigens wäre die Verwendung bzw. Definition von Konstanten sinnvoller. Keiner will irgendwelche Magic Numbers in einem Code lesen.

Grüße
Dalai

Fukiszo 18. Jan 2018 08:17

AW: "$SetPeFlags 40", was ist das?
 
Guten morgen und vielen Dank für diesen Link! (ich war zu doof für diese option brauchbare informationen zu finden)
Keine Bange, abgesehen von #20 (IMAGE_FILE_LARGE_ADDRESS_AWARE) nutze ich keine $SetPeFlags in meinen applikationen.
Ich brauchte die Information wenn ich selbst einen PE-Kopf auslese was was bedeutet.
Da reicht mir ein binär vergleich aus ohne Konstanten definieren zu müssen.

Thema erfolgreich beendet, besten Dank!

hoika 18. Jan 2018 09:18

AW: "$SetPeFlags 40", was ist das?
 
Hallo,
die Erklärung müsste hier stehen.
http://www.blong.com/Articles/TrimTheFat/

Delphi-Quellcode:
const
  IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = $0040;
  IMAGE_DLLCHARACTERISTICS_NX_COMPAT = $0100;
Da es um DEP und ASLR geht, sind das dann doch interessante Flags.

Fukiszo 18. Jan 2018 12:01

AW: "$SetPeFlags 40", was ist das?
 
auch eine interessante seite, danke, wobei ich anmerken muss

Zitat:

Delphi relocation table removal

In the project file add Windows (or Winapi.Windows) to the uses clause and follow the uses clause with this:
{$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED}

This sets a PE file header characteristics flag telling Windows there is no relocation table. In addition, Delphi takes the hint and ensures that no relocation table is placed in the PE file. Easy!
stimmt so nicht oder der Delphi 7 Compiler macht nicht das was dort erklärt wird.
(ich fand keine "Delphi Version XYZ required to do so" im Text)
bei D7 wird zwar die Flag gesetzt aber die Relocation Table landet trotzdem im file.
mir pers. ist's egal da meine RT eh nur marginale grösse von ein paar bytes hat.
für alle die mit IDE/VCL unterwegs sind sieht die lage anders aus, da bläht sich sowas gerne mal auf.

aber generell stehen da ein paar gute tipps um schon beim compilieren etwas ballast loszuwerden. Dank!

Uwe Raabe 18. Jan 2018 12:28

AW: "$SetPeFlags 40", was ist das?
 
Zitat:

Zitat von Fukiszo (Beitrag 1391297)
stimmt so nicht oder der Delphi 7 Compiler macht nicht das was dort erklärt wird.
(ich fand keine "Delphi Version XYZ required to do so" im Text)

Zwar nicht direkt in dem Post, aber in dem am Schluss verlinkten Post von Hallvard Vassbotn gibt es schon einen Hinweis gleich im ersten Absatz: http://hallvards.blogspot.de/2006/09...exe-files.html

Zitat:

its just about documenting an undocumented and unknown feature of the Delphi 2006 Win32 compiler (it is not implemented in D7 - I don't know about D2005 yet as I don't have it installed on this laptop anymore).

Fukiszo 18. Jan 2018 12:47

AW: "$SetPeFlags 40", was ist das?
 
Nun seh ich's auch :pale:

falls wer braucht hier ist ein tool samt delphi source was die .reloc entfernt.

http://www.jrsoftware.org/striprlc.php

Programmiert von Jordan Russel.

neuere delphi versionen werden's ja nicht mehr benötigen wie ich nun seh.

Dalai 18. Jan 2018 14:12

AW: "$SetPeFlags 40", was ist das?
 
@hoika:
Da geht's allerdings um SetPeOptFlags, nicht um SetPeFlags. Das sind zusätzliche Flags, wie man auch an dem identischen Werten von
Code:
IMAGE_DLLCHARACTERISTICS_NX_COMPAT = $0100;
IMAGE_FILE_32BIT_MACHINE = $0100;
sehen kann.

Grüße
Dalai

Fukiszo 18. Jan 2018 14:44

AW: "$SetPeFlags 40", was ist das?
 
Das hatte ich bereits beim lesen verstanden, da ich die Opt's schon integriert hatte.
Danke für Warnung/Hinweis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 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