Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie entpacke ich Ressourcen aus einer EXE ?? (https://www.delphipraxis.net/11181-wie-entpacke-ich-ressourcen-aus-einer-exe.html)

CloudStrife 1. Nov 2003 16:44


Wie entpacke ich Ressourcen aus einer EXE ??
 
Hallo Leute,

Ich habe ein Problem. Und zwar:

Ich versuche schon die ganze Zeit eine Ressource aus meiner EXE zu kopieren, aber mit fällt nichts ein. Ich bin ratlos. Hoffe das ihr mir helfen könnt.

Cloud

Luckie 1. Nov 2003 16:48

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Was für eien Ressource?

CloudStrife 1. Nov 2003 17:04

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Z.B. ein Icon oder eine Image. Oder eine EXE Datei
die temporär entpackt und dann gestartet werden soll.

Luckie 1. Nov 2003 17:05

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Die VCL kennt die Klasse TResourceStream.

CloudStrife 1. Nov 2003 17:07

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Danke Luckie.

Falls ich das in VCL nicht ganz kapiere, gibt es dazu eine Api ??

Luckie 1. Nov 2003 17:10

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Musst du mal im PSDK kucken. Für binäre Ressourcen hätte ich nonVCL Code von Assarbad.

Delphi-Quellcode:
function putbinresto(binresname: string; path: string): boolean;
var
  ResSize, HG, HI, SizeWritten, hFileWrite: Cardinal;
begin
  result := false;
  //find resource
  HI := FindResource(hInstance, @binresname[1], 'BINRES');
  //if legal handle, go on
  if HI <> 0 then
  begin
    //load resource and check the handle
    HG := LoadResource(hInstance, HI);
    if HG <> 0 then
    begin
      //check resource size (needed to copy a block of data)
      ResSize := SizeOfResource(hInstance, HI);
      //create the file
      hFileWrite := CreateFile(@path[1], GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,
        FILE_ATTRIBUTE_ARCHIVE, 0);
      //if succeeded ...
      if hFileWrite <> INVALID_HANDLE_VALUE then
      try
        //write to it
        result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize,
          SizeWritten, nil) and (SizeWritten = ResSize));
      finally
        //close file
        CloseHandle(hFileWrite);
      end;
    end;
  end;
end;
Aufruf:
Delphi-Quellcode:
putbinresto('CRYPTERDLL', GetTempPath + '\Crypter.dll');
Wobei 'CRYTERDLL' die ID der Ressource ist. Der Typ ist 'BINRES' (siehe Funktion).

Assarbad 1. Nov 2003 17:12

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Wenn du die VCL-Klassen nicht verstehst, solltest du erstmal die Finger von den entsprechenden APIs lassen. Ein Beispiel findest du bei meinem Hook-Tutorial ... es heißt BINRES.

CloudStrife 1. Nov 2003 17:15

Re: Wie entpacke ich Ressourcen aus einer EXE ??
 
Ok, ich schaue mir das mal an.

Danke Leute.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.

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