AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Allgemeine Frage zu den Section Headers
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Frage zu den Section Headers

Ein Thema von CorVu5 · begonnen am 25. Mär 2008
Antwort Antwort
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#1

Allgemeine Frage zu den Section Headers

  Alt 25. Mär 2008, 18:30
Hallo Leute,
Ich wollte mich mal daran machen einen Exe-Packer zu schreiben. Allerdings bekomme ich schon Probleme damit eine neue Section einzufügen. Mein Problem ist das folgende:
Ich müsste ja hinter den anderen Section Headers noch einen einfügen.
PEView zeigt mir aber einen großen leeren Raum zwischen der Code Section und dem letzten Section Header an:
334 Ist die Letzte RVA im Section HEader,
die erste RVA der Code Section lautet aber 1000.
Ich frage mich jetzt
1. Was ist dieser Zwischenraum?
2. Wo muss ich jetzt korrekt den neuen Header einfügen?

Mein Code zum Auslesen der Datei bis nach den Section Headern sieht ungefähr so aus, das Fragment wird erstmal gespeichert, PEView zeigt in dieser Datei aber nur den Code Section Header an:
Delphi-Quellcode:
var
OldFile : TMEMorystream;
Base : Pointer;
DosHeader : PIMAGEDOSHEADER;
NTHeader : PIMAGENTHEADERS;
NewFile : TMemoryStream;
FirstSectionHeader : Cardinal;
NewSectionHeader : Cardinal;
begin
OldFile := TmemoryStream.Create;
NewFile := TmemoryStream.Create;
OldFile.LoadFromFile('D:\pfad\zu\einer.exe');
Base := OldFile.Memory;
DosHeader := Base;
NTHEader := Pointer(Integer(Base) + DosHeader^._lfanew);
FirstSectionheader := DosHEader^._lfanew + SizeOf(IMAGE_NT_HEADERS);
Showmessage(IntToStr(Integer(FirstSectionHeader)));
NewSectionHeader :=FirstSectionHeader + (NtHeader^.FileHeader.NumberOfSections * SizeOf(IMAGE_SECTION_HEADER));
Showmessage(IntToStr(NewSectionHeader));
NewFile.SetSize(newSectionHeader);
CopyMemory(NewFile.Memory,OldFIle.Memory,NewSectionHEader);
NewFile.SaveToFile('D:\tempbla.exe');
NewFile.Free;
OldFile.Free;
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.
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