8 Antworten
Probiere mal den Resource Hacker aus. Damit einfach die EXE-Datei öffnen. Je nachdem welche Programmiersprache verwendet wurde, kann man damit Spuren davon erkennen. Damit kann man auch EXE-Dateien direkt bearbeiten. Freeware. Hier der Download: http://www.angusj.com/resourcehacker/
ja es ist keine exe datei das kann man erkennen daran das es lesbare zeichen sind und was ich noch erkennen kann ist dass das eine XML datei ist von der Programmiersprache XML ich kann diese Programmiersprache nicht aber was ich weiss ist das sie der Programmiersprache HTML ehnlich ist!
Gut ich danke dir eigentlich müsste es eine EXE sein zumindest wird es mir bei den eigenschaften so angezigt
Was ich noch zu der Datei sagen kann ist ist das es eine Datei ist die bei erstmaliger ausfühung eine .DLL "erschafft" diese wird dann in eine Applikation injectet
Aber alles klar ich danke dir vielmals du hast mir sehr geholfen
Das, was dir exportiert wurde, ist lediglich das Applikationsmanifest. Das ist eine Datei, die allgemeine Informationen zur Anwendung (z.B. Abhängigkeiten, die notwendige Sicherheitsstufe für die Ausführung, Angaben zur Rückwärtskompatibilität, o.ä.) beinhaltet. So kann man in deinem Fall beispielsweise herauslesen, das die Anwendung kompatibel für OS von Windows 7-11 sowie Windows Server OS ist.
Diese Metadaten sind zur besseren Lesbarkeit im XML-Format gespeichert. Allerdings sind weder XML noch HTML Programmiersprachen. Es sind lediglich Werkzeuge zur Datenstrukturierung und -beschreibung.
Es ist für Windows OS nicht unüblich, das eine Executable auch eine Manifestdatei beinhaltet. Aufgrund dieser OS-spezifischen Ausrichtung könnte man erste Vermutungen anstellen, dass die Anwendung wahrscheinlich mit .NET (C#, VB, Visual C++, o.ä.) oder C/C++ entwickelt wurde. Eine eindeutige Zuordnung lässt sich anhand der gegebenen Informationen jedoch noch nicht treffen.
Generell gar nicht. Du kannst mit etwas Kenntnis vieler Compiler unter Umständen erkennen, von welchem Compiler der binäre Code erzeugt wurde, und anhand dessen auch wissen, in welcher Sprache der Quellcode geschrieben war. Für manche Sprachen finden sich auch charakterisierende Eigenschaften im Code wieder, was ebenfalls einen Hinweis geben kann - aber eine direkter Bezug von Sprache zu ausführbarem Code besteht im Allgemeinen nicht.
Beispiel: hier kompiliere ich x²+x³ - in welcher Sprache der Quellcode dafür geschrieben ist, oder wie dieser ursprünglich aussah, ist aus dem resultierenden ausführbaren Code absolut nicht mehr zu erkennen:
( 8BD3 ) MOV EDX, EBX
( 0FAFDA ) IMUL EBX, EDX
( 0FAFD3 ) IMUL EDX, EBX
( 03DA ) ADD EBX, EDX
Information um welche Sprache es sich handelte, kann also nicht aus Sequenzen generiertem Code selbst gewonnen werden, sondern erfordert einen Blick auf Eigenheiten des Zusammenbau vom Ganzen - hier kommt allerdings das Problem hinzu, dass viele Programme aus mehreren Komponenten bestehen, die in verschiedenen Sprachen geschrieben wurden.
mit viel Wissen und Aufwand wird das möglich sein. Jeder Compiler trägt die Handschrift des Programmierers, der den Compiler, oder zumindest Teile davon programmiert hat, tragen.
Genau so eine "Handschrift" sollte jeder Binär-Code eines Programms tragen.
Vergleicht man Code, der z.B. mit gcc (C++ Compiler ) übersetzt wurde mit dem unbekannten Binärcode, dann findet man schon Gemeinsamkeiten.
Ähnlich suchen Virenscanner nach Schadcode.
Man kann anhand von Informationen in der Datei gewisse Schlußfolgerungen ziehen, insbesondere nicht stripbare Symbolnamen können Aufschluß über Funktionsnamen geben, was zumindest bei Nutzung von Standardbibliotheken einen Rückschluß auf die Sprache zulässt.
Auch sonstige Eigenheiten können entsprechend herangezogen werden.
Also man kann es manchmal herausfinden, da jeder Compiler so seine eigene Signatur mitbringt.
Bei Java jetzt Mal außen vor, aber wenn du dir zB den Maschinencode von c++ dem gnu Compiler oder den Maschinencode des Rust compulers anschaust, dann sind die steukturell doch sehr unterschiedlich.
Ansonsten ist es bei größeren Problemen i.d.R am einfachsten sich die Verzeichnisse der Installation anzuschauen, da findet man sehr häufig Hinweise.
I.d.R sind aber fast alle Desktop Anwendungen mit C++ geschrieben, sehr alte teilweise in C neue teilweise in Rust bzw. Einer Kombination aus denen (der Linux Kernel hat zB Rust Elemente).
Es gibt zum untersuchen von .exe Dateien aber auch Tools. Ressourcenhacker ist da das bekannteste.
Erstmals danke, wen ich die Exe dort einfüge kommt immer ein Ordner Namens Manifest wen ich diesen öffne wird mir dieser Text angezeigt
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel></requestedPrivileges></security></trustInfo><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS><supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS><supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"></supportedOS><supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS></application></compatibility></assembly>
Kann man daraus was erkennen?