Delphi-PRAXiS
Seite 1 von 2  1 2      

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 24. Dez 2003 09:42


Entypoint
 
Hi DPler!

Weiß jemand wie ich (möglichst einfach) den Einstiegspunkt einer exe aus dem PE-Header auslesen kann???

Steht der vielleicht immer an der gleichen Position???

Vielen Dank schon mal!

SleepyMaster 25. Dez 2003 12:19

Re: Entypoint
 
Irgendjemand muss es doch wissen!!!

Bitte helft ma!

Luckie 25. Dez 2003 12:36

Re: Entypoint
 
Was soll das werden? Dein Posting ist gerade mal 24 Stunden alt und noch dazu sind Feiertage, Weihnachten um dich mal daran zu erinnern. Was ich damit sagen will, gedulde dich mal etwas, insbesondere über die Feiertage. :warn:

SleepyMaster 25. Dez 2003 12:47

Re: Entypoint
 
Ich glaube nur, dass wenn jemand während der Feiertage Zeit hatt sich zu beschweren, dann wird er sicherlich auch die Zeit haben eine kurze Antwort zu geben!

Luckie 25. Dez 2003 12:54

Re: Entypoint
 
Und ich glaube, wenn auch wärend der Feiertage jemand dein Topic sieht und es wüßte, dir antworten würde. :evil:

SleepyMaster 25. Dez 2003 12:58

Re: Entypoint
 
Du weißt es also nicht??? OK!
Dann sorry! Dachte du wüsstest es!

SleepyMaster 25. Dez 2003 13:26

Re: Entypoint
 
OK! Ich habs geschafft! Für alle die es interessiert wie:
(Ist aber kein bissel optimiert, da ich es eigendlich nur aus Assarbads programm isexe rauskopiert hat und damit eigendlich für was anderes gedacht ist!)

Delphi-Quellcode:
type
  PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
  PIMAGE_NT_HEADERS = ^IMAGE_NT_HEADERS;

function _isEXE(fname: string; var DOS_EXE: boolean; var imghead: IMAGE_NT_HEADERS): boolean;
var
  hfile, hmap: THandle;
  saveview, pEXE: pchar;
begin
  result := false;
  if @DOS_EXE <> nil then
    DOS_EXE := false;
  if fname <> '' then
    begin
      hfile := createfile(@fname[1], GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
      if hfile <> INVALID_HANDLE_VALUE then
        try
          hmap := CreateFileMapping(hFile, nil, PAGE_READONLY, 0, 0, nil);
          if hmap <> 0 then
            try
              saveview := MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0);
              pEXE := saveview;
              if not IsBadReadPtr(pEXE, sizeof(WORD)) then
                begin
                  result := PWORD(pEXE)^ = IMAGE_DOS_SIGNATURE;
                  if @DOS_EXE <> nil then
                    DOS_EXE := result;
                  if result then
                    begin
                      pEXE := pEXE + PIMAGE_DOS_HEADER(pEXE)^._lfanew;
                      if not IsBadReadPtr(pEXE, sizeof(DWORD)) then
                        begin
                          result := PIMAGE_NT_HEADERS(pEXE)^.Signature = IMAGE_NT_SIGNATURE;
                          if result then
                            if @imghead <> nil then
                              CopyMemory(@imghead, pEXE, sizeof(imghead));
                        end;
                    end;
                end;
            finally
              UnmapViewOfFile(saveview);
              CloseHandle(hmap);
            end;
        finally
          CloseHandle(hfile);
        end;
    end;
end;

function DWORD2hex(dw: DWORD): string;
begin
  result := Format('%8.8Xh', [dw]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  NTImgHeaders: IMAGE_NT_HEADERS;
  bool_pefile, bool_dosexe: boolean;
begin
bool_pefile := _isexe(Paramstr(0), bool_dosexe, NTImgHeaders);
Edit1.Text:=dword2hex(NTImgHeaders.OptionalHeader.AddressOfEntryPoint);
end;

SleepyMaster 25. Dez 2003 14:38

Re: Entypoint
 
Wobei ich jetzt trozdem noch die Frage hätte, an welcher Addresse der Einstiegspunkt steht
(Vom Anfang der Datei her gesehen)

SleepyMaster 25. Dez 2003 16:17

Re: Entypoint
 
OK! Danke habs geschafft!

Luckie 25. Dez 2003 16:19

Re: Entypoint
 
Und wie? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.
Seite 1 von 2  1 2      

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