Einzelnen Beitrag anzeigen

Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#1

Letzte section einer PE Datei auslesen.

  Alt 12. Jul 2013, 19:52
Delphi-Version: 7
Hallo,

hier ein kleiner Teil meines Codes, den ich vorher in c++ geschrieben habe und nun versuche nach delphi zu portieren:

Delphi-Quellcode:
  asm
    mov eax, dword ptr fs:[$30]
    mov eax, dword ptr [eax+8]
    mov dwImageBase, eax
  end;

   IDH := Pointer(dwImageBase);
   INH := Pointer(DWORD(IDH) + IDH^._lfanew);
   ISH := Pointer(DWORD(IDH) + IDH^._lfanew + 248 + (40 * (INH.FileHeader.NumberOfSections-1)));

  SetLength(sfile,ISH.Misc.VirtualSize);
  CopyMemory(@sfile[1], Pointer(dwImageBase + ISH.VirtualAddress), ISH.Misc.VirtualSize);
Kurze Erläuterung:

Structs :

IDH = IMAGE_DOS_HEADER
INH = IMAGE_NT_HEADERS
ISH = IMAGE_SECTION_HEADER

IDH + _lfanew + 248 = Ende Optionalheader + 40(grße einer einzelnen section) * anzahl der sections-1 = Pointer zu dem Anfang der letzten Section.

CopyMemory kopiert leider nicht korrekt, irgendetwas stimmt wohl nicht bei @sfile[1] oder so.
  Mit Zitat antworten Zitat