Woran erkenne ich in welcher Programmier-Sprache etwas programmiert wurde?

LFF5644  23.01.2023, 21:03

was ist denn die datei endung (also .EXE oder .DLL .apk ....)

Poco889 
Beitragsersteller
 23.01.2023, 21:38

Eine .EXE

8 Antworten

Von Experte Commodore64 bestätigt

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/


Poco889 
Beitragsersteller
 23.01.2023, 21:29

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?

LFF5644  23.01.2023, 21:39
@Poco889

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!

Poco889 
Beitragsersteller
 23.01.2023, 22:22
@LFF5644

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

Poco889 
Beitragsersteller
 23.01.2023, 22:54
@LFF5644

Oder vllt wurde sie zu einer XML/EXE Konvertiert fals möglich

regex9  24.01.2023, 04:58
@Poco889

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.

Poco889 
Beitragsersteller
 01.02.2023, 16:05
@regex9

Das war sehr hilfreich ich danke dir ich vermute auch das die Datei entweder mit C# oder Lua entwickelt wurde

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.


Bushmills145  24.01.2023, 10:13

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.

Von Experte guenterhalt bestätigt

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.