Ein Programm was zeigt mit welcher Programmier-Sprache ein Programm geschrieben wurde



  • Compiler und Linker hinterlassen oft Metadaten in den Binaries, da muss man aber wissen, wonach man suchen muss.



  • kingruedi schrieb:

    Compiler und Linker hinterlassen oft Metadaten in den Binaries, da muss man aber wissen, wonach man suchen muss.

    Und wenn beispielsweise VC + VB den gleichen Compiler verwenden kann man
    allenfalls Häufigkeitsanalysen bezüglich bestimmter Konstrukte versuchen.

    Ich glaube das es Hinweise auf bestimmte Compiler und Linker gibt, aber nicht
    das diese Merkmale charakteristisch durch Programmiersprachen vorgegeben
    sind.



  • Bei kompilierten ShellScripts und/oder PythonScripts dürfte es einfach sein. Bei Python ist es schon an der Endung ersichtlich. Für sonstige Binärdateien sollte es nicht gar so schwer sein ein Prog zu schreiben welches die Header der Binaries vergleicht. Denn schliesslich hat ne native Binary einen anderen Header als irgendwelcher P-Code von VB oder C#. Müsste man sich mal auseinandersetzen. Am einfachsten ist es sich die Dinger im HexEditor anzusehen. Oft kann man auch daran sehen in was es geschrieben ist:
    http://fun.sdinet.de/pics/windoof/msnmessenger-no-error-hex.jpg

    rya.
    Scorcher24



  • Hi!
    Zufälligerweise kenn ich da ein tool, wo die Programmiersprache oder ein Packer, wenn die exe z.B. von UPX gepackt wurde anzeigt.

    Das ganze heißt peid, ist natürlich freeware und du kannst es hier runterladen: http://peid.has.it/

    Viel Spaß 😉



  • Von Scriptsprachen war bislang nicht die Rede du Scherzkeks. 😃

    Von "Zwischencode" wie in Java oder C# hab ich, zumindest auch nicht
    gesprochen. 🙂

    VB(-6) ist/war schon lange kein P-Code mehr, ausser man wünscht es
    explizit, was aber praktisch keinen Sinn macht. 😉



  • Perner schrieb:

    Hi!
    Zufälligerweise kenn ich da ein tool, wo die Programmiersprache oder ein Packer, wenn die exe z.B. von UPX gepackt wurde anzeigt.

    Das ganze heißt peid, ist natürlich freeware und du kannst es hier runterladen: http://peid.has.it/

    Viel Spaß 😉

    Compiler != Programmiersprache 😉



  • Ich habe allgemein über Möglichkeiten sinniert, wie man so ein Tool bauen könnte. Und wenn man es komplett haben will, tja dann sollte das Programm auch C# oder VB erkennen können. Da es anscheinend sowas noch nicht gibt, kannste Dich ja mal ranmachen!
    rya.
    Scorcher24



  • Redhead schrieb:

    Compiler != Programmiersprache 😉

    Ja mein ich doch. 🙂
    Also das Tool zeigt den Compiler an z.B. MSVC++ 6.0 oder Borland C++ ect.



  • Perner schrieb:

    Redhead schrieb:

    Compiler != Programmiersprache 😉

    Ja mein ich doch. 🙂
    Also das Tool zeigt den Compiler an z.B. MSVC++ 6.0 oder Borland C++ ect.

    Das muss aber eben nicht zwangsläufig die Programmiersprache verraten.
    Mein Beispiel war eben VB6 und VC die beide den gleichen Compiler
    verwenden.



  • Redhead schrieb:

    Perner schrieb:

    Redhead schrieb:

    Compiler != Programmiersprache 😉

    Ja mein ich doch. 🙂
    Also das Tool zeigt den Compiler an z.B. MSVC++ 6.0 oder Borland C++ ect.

    Das muss aber eben nicht zwangsläufig die Programmiersprache verraten.
    Mein Beispiel war eben VB6 und VC die beide den gleichen Compiler
    verwenden.

    Du hast keine Ahnung was?? Also Visual Studio benutzt für VB und C++ bestimmt nicht denselben Compiler...
    rya.
    Scorcher24



  • Scorcher24 schrieb:

    Redhead schrieb:

    Perner schrieb:

    Redhead schrieb:

    Compiler != Programmiersprache 😉

    Ja mein ich doch. 🙂
    Also das Tool zeigt den Compiler an z.B. MSVC++ 6.0 oder Borland C++ ect.

    Das muss aber eben nicht zwangsläufig die Programmiersprache verraten.
    Mein Beispiel war eben VB6 und VC die beide den gleichen Compiler
    verwenden.

    Du hast keine Ahnung was?? Also Visual Studio benutzt für VB und C++ bestimmt nicht denselben Compiler...
    rya.
    Scorcher24

    Wenn du keine Ahnung hast solltest du vorsichtig sein mit solchen Behauptungen. 🙄

    Zuerst einmal ein Link für den Unwissenden:
    http://brucem.mystarband.net/mckinney2a.htm
    Such mal na C2.EXE

    Im VC-Verzeichnis findest übrigens das Gegenstück C2.DLL. Noch genaueres
    Hinsehen verät dir dann das beide sogar den gleichen Linker verwenden.
    Dadurch wird dann aber auch verständlich warum cross-debugging möglich ist.



  • Tja leider ist der Compiler vom VC cl.exe.
    rya.
    Scorcher24



  • Scorcher24 schrieb:

    Tja leider ist der Compiler vom VC cl.exe.
    rya.
    Scorcher24

    Wenn das so ist, dann versuch doch mal ein C++ Programm ausschliesslich mit cl.exe
    zu kompilieren. Lösch einfach mal den überflüssigen Müll:
    - C1.DLL
    - C1XX.DLL
    - C2.DLL

    Was ein multi-pass Compiler ist weisst du aber schon, oder ?



  • und cl ist ja bekanntlich nicht die abkürzung von compile/link, das tool cl.exe könnte also nicht weitere compilersettings etc. verwalten?
    -> denken, drücken, sprechen!
    rya.



  • mann mann mann, ihr macht euch alle immer gedanken. ^^



  • das_brot schrieb:

    und cl ist ja bekanntlich nicht die abkürzung von compile/link, das tool cl.exe könnte also nicht weitere compilersettings etc. verwalten?
    -> denken, drücken, sprechen!
    rya.

    Tja, dann verwaltet diese Tool vielleicht irgendwelche Einstellungen, und was ändert sich dadurch ?
    -> denken, drücken, sprechen!

    Es bleibt dabei, VB verwendet, für Teile seines Compile-Vorgangs, den gleichen Compiler wie C++.



  • Redhead schrieb:

    das_brot schrieb:

    und cl ist ja bekanntlich nicht die abkürzung von compile/link, das tool cl.exe könnte also nicht weitere compilersettings etc. verwalten?
    -> denken, drücken, sprechen!
    rya.

    Tja, dann verwaltet diese Tool vielleicht irgendwelche Einstellungen, und was ändert sich dadurch ?
    -> denken, drücken, sprechen!

    im wesentlichen ist cl.exe eben nicht wie scotch24 gesagt hat der compiler...
    aber lassen wirs - stay cool.



  • das_brot schrieb:

    Redhead schrieb:

    das_brot schrieb:

    und cl ist ja bekanntlich nicht die abkürzung von compile/link, das tool cl.exe könnte also nicht weitere compilersettings etc. verwalten?
    -> denken, drücken, sprechen!
    rya.

    Tja, dann verwaltet diese Tool vielleicht irgendwelche Einstellungen, und was ändert sich dadurch ?
    -> denken, drücken, sprechen!

    im wesentlichen ist cl.exe eben nicht wie scotch24 gesagt hat der compiler...
    aber lassen wirs - stay cool.

    Ausser Microsoft weiss wohl keiner was drin steckt.
    Aber wenn man das Teil mal standalone auffruft, erkennt man
    das Microsoft selbst dieses Teil als
    "Optimierender Microsoft (R) 32-Bit C/C++-Compiler, Version..."
    bezeichnet.
    Zufall, Absicht,..., wer weiss. 😉



  • Um mal auf die ursprüngliche Frage zu antworten:
    Sucht mal nach "Language 2000".. es ist zwar leider schon etwas veraltet, sollte aber den Zweck erfüllen 🙂


Anmelden zum Antworten