Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Khronos14 en 25 Enero 2011, 17:52 pm



Título: [Delphi] PEFileSize function
Publicado por: Khronos14 en 25 Enero 2011, 17:52 pm
Código
  1. (*
  2.  * PEFileSize function, inspired by The Swash
  3.  * by Khronos
  4. *)
  5.  
  6. function PEFileSize(FileName: string): Cardinal;
  7. var
  8. i: integer;
  9. FileStream: TFileStream;
  10. IDH: IMAGE_DOS_HEADER;
  11. INH: IMAGE_NT_HEADERS;
  12. ISH: IMAGE_SECTION_HEADER;
  13. begin
  14. result:= 0;
  15.  try
  16.    FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  17.    FileStream.Read(IDH, SizeOf(IDH));
  18.    if IDH.e_magic = IMAGE_DOS_SIGNATURE then
  19.      begin
  20.        FileStream.Seek(IDH._lfanew, 0);
  21.        FileStream.Read(INH, SizeOf(INH));
  22.        if INH.Signature = IMAGE_NT_SIGNATURE then
  23.          begin
  24.            for I := 0 to INH.FileHeader.NumberOfSections - 1 do
  25.              begin
  26.                FileStream.Seek(IDH._lfanew + SizeOf(INH) + SizeOf(ISH) * i, 0);
  27.                FileStream.Read(ISH, SizeOf(ISH));
  28.                result:= result + ISH.SizeOfRawData;
  29.              end;
  30.            result:= result + INH.OptionalHeader.SizeOfHeaders;
  31.          end;
  32.      end;
  33.  finally
  34.    FileStream.Free;
  35.  end;
  36. end;
  37.  

Saludos.


Título: Re: [Delphi] PEFileSize function
Publicado por: The Swash en 25 Enero 2011, 17:53 pm
Muy bien Khronos, gracias por la traducción y me alegra que te aya gustado.
 ;D