AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Alternative für MapAndLoad

Ein Thema von Bernhard Geyer · begonnen am 1. Dez 2020 · letzter Beitrag vom 7. Dez 2020
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
 
Delphi 12 Athens
 
#11

AW: Alternative für MapAndLoad

  Alt 1. Dez 2020, 19:32
In welcher Verbindung steht das mit der Frage, welche Architektur ein Executable hat?
Die Funktion MapAndLoad wird nur verwendet, um die Platform (Bitigkeit) der Anwendung auszulesen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#12

AW: Alternative für MapAndLoad

  Alt 1. Dez 2020, 21:30
Die Funktion MapAndLoad wird nur verwendet, um die Platform (Bitigkeit) der Anwendung auszulesen.
Ja eben. Deswegen sehe ich nicht, was GetShortPathName damit zu tun hat.

PS: Die durch MapAndLoad gefüllte Datenstruktur LOADED_IMAGE lässt noch mehr zu, als nur die Plattform auszulesen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
 
Delphi 12 Athens
 
#13

AW: Alternative für MapAndLoad

  Alt 1. Dez 2020, 23:30
Die MSDN-Library durchsuchenMapAndLoad-API gibt es nur als ANSI. (obwohl es die scheinbar erst seit WinXP gibt und die WinNT-Linie eigentlisch schon ewig auf Unicode ist)

Heißt, dass Unicode-Dateinamen damit nicht möglich sind und man sie z.B. durch GetShortPathName in ANSI umwandeln müsste.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Dez 2020 um 23:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#14

AW: Alternative für MapAndLoad

  Alt 2. Dez 2020, 17:40
Ah, jetzt verstehe ich den Zusammenhang. Ja, das ist nachvollziehbar. Vielleicht könnte man mit den Funktionen MSDN-Library durchsuchenMapViewOfFile und MSDN-Library durchsuchenImageNtHeader etwas machen, um die Datenstruktur MSDN-Library durchsuchenIMAGE_NT_HEADERS füllen zu lassen. Halte ich für besser, als manuell in der EXE rumzusuchen.

Übrigens gibt's MapAndLoad im Win2k auch schon.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#15

AW: Alternative für MapAndLoad

  Alt 7. Dez 2020, 15:55
Ich würde die Funktion selbst schreiben, ohne MapAndLoad, sondern einfach mit einem TFileStream, da ist die Dateigröße auch egal und das funktioniert performant.

Ich kann meinen getesteten Code hier teilen, um die Bittigkeit einer EXE zu prüfen, falsch gewünscht.

Edit: LoadLibraryEx() mit LOAD_LIBRARY_AS_DATAFILE, ist sonst was man verwendet um Module (DLLs/EXE usw.) in den Speicher zu laden, und dann dort direkt mit Pointern weiter zu arbeiten. Windows verwendet hier automatisch Paging und wird nur die relevanten Teile laden. Aber wenn etwas mit virtuellen Addressen zu tun hat, muss man trotzdem umrechnen. Und die Offsets in den Dateiheadern muss man auch beachten. Feste Offsets/Konstanten sollte man nicht verwenden, um an die richtige Stelle zu springen.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd

Geändert von mael ( 7. Dez 2020 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#16

AW: Alternative für MapAndLoad

  Alt 7. Dez 2020, 16:15
https://superuser.com/questions/3584...bit-on-windows
Also
1, Suche "PE" in der Datei
2, Überspringe die beiden Null-Zeichen (\0\0)
3, Wenn jetzt d† kommt ($64 $86) kommt dann hat man AMD64
Besser ist es die Offsets die in den Headern angegeben sind zu verwenden. Dann funktioniert das mit allen Images, egal von welchem Compiler oder wie die optimiert wurden (solange sie korrekt sind natürlich).
Der Code bleibt trotzdem knapp, etwa eine Bildschirmseite.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:44 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