AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi EXE aus recource starten ohne extra eine Datei zu erzeugen?
Thema durchsuchen
Ansicht
Themen-Optionen

EXE aus recource starten ohne extra eine Datei zu erzeugen?

Ein Thema von magicshadow · begonnen am 17. Mai 2003 · letzter Beitrag vom 23. Mai 2003
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#11
  Alt 19. Mai 2003, 13:38
@Luckie: verstehst du den Code?
Du hast mir den Code ja auch schonmal geschickt, ich hatte damals aber grad nicht viel Zeit und hab nur kurz reingeschaut... hab mir das jetzt mal genauer zu Gemüte geführt (allerdings nur im Notepad, da ich im Zivi kein Delphi hab) und muss sagen ein äußerst interessanter Ansatz! Werd mir das zu Hause nochmal näher anschaun müssen!!
Manuel Pöter
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#12
  Alt 19. Mai 2003, 14:03
der Ansatz mit den Sektinoen ist sehr gut. Wenn du mir jetzt noch sagen könntest, wie ich die Checksumme des PE-headers der Exe berechne, wäre ich der glücklichste Delphi-Coder der Welt ... lol Danach such ich nämlich. Der Rest mit dem PE-Header und den Sektionen ist relativ einfach im Code zu verstehen. Du gehst alle sektionen durch und schaust ob die read- oder writeable sind und alloziierst dann dementsprechend den RAM wenn ich das richtig sehe. aber ich laber wieder zuviel wäre cool wenn du hilfe wüsstest.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#13
  Alt 22. Mai 2003, 13:03
Achja, Luckie, in deinem Proggie hab ich noch einFehler im Exe-Header gefunden.


TImageFileHeader sollte so aussehen:

Code:
  PImageFileHeader = ^TImageFileHeader;
  TImageFileHeader = record
    PEName              : array[1..4] of Char;
    Machine             : WORD;
    NumberOfSections    : WORD;
    TimeDateStamp       : DWORD;
    PointerToSymbolTable : DWORD;
    NumberOfSymbols     : DWORD;
    SizeOfOptionalHeader : WORD;
    Characteristics     : WORD;
  end;
Mich wundert, dass dein Programm so überhaupt läuft

Solltest du vielleicht im Download ändern. Anonsten isses echt goil.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#14
  Alt 22. Mai 2003, 13:46
Zitat von ShadowCaster:
Achja, Luckie, in deinem Proggie hab ich noch einFehler im Exe-Header gefunden.


TImageFileHeader sollte so aussehen:

Code:
  PImageFileHeader = ^TImageFileHeader;
  TImageFileHeader = record
    PEName              : array[1..4] of Char;
    Machine             : WORD;
    NumberOfSections    : WORD;
    TimeDateStamp       : DWORD;
    PointerToSymbolTable : DWORD;
    NumberOfSymbols     : DWORD;
    SizeOfOptionalHeader : WORD;
    Characteristics     : WORD;
  end;
Mich wundert, dass dein Programm so überhaupt läuft

Solltest du vielleicht im Download ändern. Ansonsten isses echt goil.
Aus dem MSDN:
Zitat von MSDN:
IMAGE_FILE_HEADER Fields

Code:
WORD Machine
  The CPU that this file is intended for.
WORD NumberOfSections
  The number of sections in the file.
DWORD TimeDateStamp
  The time that the linker (or compiler for an OBJ file) produced this file.
DWORD PointerToSymbolTable
  The file offset of the COFF symbol table.
DWORD NumberOfSymbols
  The number of symbols in the COFF symbol table. See above.
WORD SizeOfOptionalHeader
  The size of an optional header that can follow this structure.
WORD Characteristics
  Flags with information about the file.
Link: http://msdn.microsoft.com/library/de..._peeringpe.asp

Die Deklaration im Source von Luckie ist also korrekt..!
BTW: der Source stammt gar nicht von Luckie, steht auch im Readme-File...
Manuel Pöter
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#15
  Alt 22. Mai 2003, 14:18
Da hat Microsoft aber gehörigen Mist gebaut! Ich hab 30 anderer Abhandlungen übers PE-Format. Die sagen ALLE was anderes und zudem hab ich nach Luckies(oder von wem auch immer das Programm ist) Programm-Exeheader beim Debuggen da an der Stelle Fehler rausbekommen. Die Anzahl der Sektionen, der größe des optionalen Headers war 0 und auch sonst im optionalen Header war alles 0. Habe ich diesen zusätzlichen wert noch hinzugefügt, wurde jede Exe meines Betriebssystems richtig eingelesen.

da hätte ich gerade mal eine andere Frage:

Nehmen wir an, ich hab den Sectionheader ausgelesen. Da ist ja eine Virtual-Address mit bei. In jeder Abhandlung steht, dass die was mit dem Laden der Sektion zu tun hat. Das ist ja alles schön und gut, nur wie krieg ich jetzt raus ab welcher Adresse die Sektion im Programm anfängt und wo sie wieder aufhört? Wenn ich das weiß, kann ich nämlich Records drüber legen und dann passt das auch. Aber so weiß ich es nicht. VirtuallAddress scheint es jedenfalls nicht zu sein. Bei mir kommt da immer Müll raus.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16
  Alt 22. Mai 2003, 14:34
Ist nicht mein Source. Habe ich auch nie behauptet. Und das Nico da einen Fehler einbaut, halte ich für sehr unwahrscheinlich. Götter machen keine Fehler.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#17
  Alt 22. Mai 2003, 14:41
selbst wenn da ein Fehler ist... ist das so schlimm? Das war doch nur gut gemeint von mir. Achja, könntest du meine Frage bitte bittte bitte noch vom vorherigen Posting beantworten, wie ich an die Dateiadressen der Sections rankomm?


Meine Herleitung sieht folgendermaßen aus, warum auch dieser "Nico" einen Fehler machen kann:

Jedes Programm enthält mindestens ein Fehler.
Meine Herleitung: Jeder Programmierer, der ein Programm schreibt, macht mindestens einen Fehler


also ich freu mich auf die Antwort auf die in diesem Beitrag wiederholt gestellte Frage


Nachtrag: Offenbar war doch kein Fehler drinnen, hab gesehen, dass in den NT-Headers noch ein DWORD-Wert vorne rangestellt wird. Der entspricht wohl dem Fehlenden. Asche über mein Haupt (mal wieder )

Habs getestet, die Header sind OK!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18
  Alt 22. Mai 2003, 14:53
Dass Beispiel funktioniert sowieso nur unter NT-basierenden Systemen.

Und wenn ich dir antworten könnte, würde ich es auch tun. Du brauchst mich nicht extra auffordern. Aber ich habe von den Zeugs keine Ahnung. Ich war nur eben im besitzt dieses Demos von Nico.

Sicher macht Nico auch Fehler, aber du kennst Nico anscheinend nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ShadowCaster

Registriert seit: 19. Mai 2003
71 Beiträge
 
Delphi 5 Enterprise
 
#19
  Alt 22. Mai 2003, 15:16
Ok, die Records für die Sections hab ich eigentlich und ermitteln, wann ich welchen Record einsetze kann ich auch.

Die Größe einer Section ist: SectionSize := SizeOfRawData - VirtualSize

Das hab ich jetzt schonmal rausgefunden. Allerdings brauch ich jetzt noch die Formel, wie ich die Beginnadresse dieser Sektion errechnen kann. Wenn ich das hätte, wär ich sogut wie fertig mit meinem PE-Dumper.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#20
  Alt 22. Mai 2003, 16:53
Woher hast du denn deine Informationen bezogen? Am besten ladest du dir die CHM-PE-Doku von Assarbad runter (ist nur eine kompilierte Version der PSDK/MSDN Dokus. Und auf der vorherigen Seite hab ich dir ja den Link zur MSDN-Seite der PE-Doku gepostet...
Manuel Pöter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15:33 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