Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Entypoint (https://www.delphipraxis.net/13697-entypoint.html)

SleepyMaster 25. Dez 2003 17:16

Re: Entypoint
 
Hab auf http://hyatus.dune2.info/Miscellanous/exe_header.html die Infos zum aufbau von exe Dateien gefunden und mir dann diese Unit geschrieben

Delphi-Quellcode:
unit EntryPoint;

interface

function GetEntryPoint(Filename:string):integer;

implementation

uses
  Math,SysUtils;

function GetEntryPoint(Filename:string):integer;
var
  F:File;
  Buffer,e:string;
  m:integer;
  PEHeaderPoint:longint;
function HexToInt(H: String): integer;
  var i: Integer;
  begin
  Result:= 0;
  for i:= Length(H) downto 1 do
    Case H[i] of
      '0'..'9': Result:= Result+ (Ord(H[i])- 48) * Round(Power(16, Length(H)- i));
      'A'..'F': Result:= Result+ (Ord(H[i])- 55) * Round(Power(16, Length(H)- i));
    end;
  end;
begin
AssignFile(f, Filename);
reset(f,1);
Seek(F, $3C);                             //$3C Bytes nach anfang der Datei steht die Position des PE Headers
SetLength(buffer,4);
Blockread(F,Buffer[1],Length(Buffer));    //Ausgelesen wo der PE Header anfängt
E:='';
for m:=1 to Length(Buffer)do
  if ord(Buffer[m])>$F then
    E:=E+inttoHex(ord(Buffer[m]),2)
  else
    E:=E+inttoHex(ord(Buffer[m]),1);
PEHeaderPoint:=hextoint(E);
Seek(F, $28+PEHeaderPoint);               //$28 Bytes nach anfang des Headers steht die Position des EntryPoints
Blockread(F,Buffer[1],Length(Buffer));    //Entry Point wird ausgelesen
Result:=hextoint(inttoHex(ord(Buffer[4]),2)+inttoHex(ord(Buffer[3]),2)+inttoHex(ord(Buffer[2]),2)+inttoHex(ord(Buffer[1]),2));
CloseFile(f);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz