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.