Wie zu erkennen, wenn eine Datei ist eine EXE-oder eine DLL?
Wenn Sie bekommen haben, die Datei extensions Durcheinander, wie können Sie sagen, eine ausführbare abgesehen von einer DLL?
Sie scheinen beide zu haben, Einstiegspunkte und alles...
- programmatisch?
- Ich meine, mehr wie durch Ihre Eigenschaften (z.B. PE-Header, deren Demontage, etc.)
- Benennen Sie Sie mit der Erweiterung
exe
und führe es in einer Windows-Umgebung. Wenn es etwas tut, es ist eine exe-Datei. 😛 ich bin wirklich neugierig, dies zu... - Sie können überprüfen, dass der PE-header. Sehen kichik die Antwort hier: stackoverflow.com/questions/1210873/...
- Ich sollte gesehen haben, dass das kommt 😛
- Ist die Datei, die Beschreibung und die Metadaten Durcheinander zu?
- Danke, aber das hilft nicht wirklich sagen, wie Sie zu unterscheiden. Auch bin ich mir nicht sicher, was Sie damit meinen
There is only single main entry (for EXEs)
- es gibt nur einen einzigen Haupt-Eintrag für DLLs zu (DllEntry
)... - Falls Sie auf der Suche auf den Ressourcen/version info, ja-das ist Betrug und es funktioniert nicht immer. 😛
- Die akzeptierte Antwort nicht viel sagen, aber kichik die Antwort ist Recht auf das Geld: "kann man die Merkmale die der IMAGE_FILE_HEADER innen IMAGE_NT_HEADERS. Für eine DLL, hat es die IMAGE_FILE_DLL (0x2000) - flag eingeschaltet. Für eine EXE ist es die IMAGE_FILE_EXECUTABLE_IMAGE (0x2) "flag" - werde ich noch etwas code zusammen, der dies tut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf dieser Artikel für eine gute Erklärung eines portable executable) unter windows.
Anschaut und dann den Abschnitt über den PE-header. Auch die code-in-shows in C den Weg zu öffnen und zu untersuchen, die eine PE-Datei mithilfe von Win32. Diese Informationen, die Sie suchen, für die ist gespeichert in der IMAGE_FILE_HEADER. Speziell in der
Characteristics
Feld gehören würde, die FlaggeIMAGE_FILE_DLL 0x2000
wenn es eine dll ist.Dass, sollte Ihnen genügend Informationen, um ein kleines Dienstprogramm, das macht die Bestimmung einer Reihe von Dateien, wenn das ist, was Sie suchen.
Die relevantesten bits von code für Referenz-Zwecke verwendet, kopiert aus dem Artikel oben und bearbeitet werden, um entfernen Sie überflüssige detail/Fehlerbehandlung.
Diese info befindet sich im PE-header. Um es anzuzeigen, können Sie es mit PE explorer wie die NTCore CFF-Explorer und öffnen Sie die Merkmale-Feld der Datei-header, wo Sie herausfinden können, ob es eine DLL oder ausführbare Datei.
wenn jemand interessiert hier ist der code in C#, getestet für 32-bit-PE-Dateien.
Funktioniert für mich. Ich weiß nicht genau erinnern, was Sie verwenden, wenn Sie nicht über grep installiert, aber ich schlage vor, Sie tun.
Greifen OllyDbg und öffnen Sie die EXE - /DLL in es. Bringen Sie den Speicher-Karte, indem Sie auf die große M-Taste an der Oberseite. Blättern Sie nach unten, bis Sie finden den PE-header der Modul-das entspricht Ihrem Programm. Doppelklicken Sie auf um es zu öffnen in-memory-dump. Blättern Sie nach unten, wo Sie sehen, PE Signatur (wahrscheinlich 0xF8 von Basis-image), und wenn es eine DLL, die dann Eigenschaften haben, die DLL-Flagge. Merkmale sollte ein paar Einträge nach unten aus PE-Unterschrift.