Ein Programm was zeigt mit welcher Programmier-Sprache ein Programm geschrieben wurde
-
Condor33 schrieb:
Man kann den Binärcode analysieren und davon rückschlüsse auf etwaige Compiler bzw. Programmiersprachen ziehen. Schliesslich gibt es da Unterschiede wie die verschiedenen Programmiersprachen Funktionsaufrufe etc. umsetzen und handhaben.
Da es verschiedene Programmiersprachen gibt, die den den gleichen Compiler
verwenden führt auch das nicht so richtig zum Ziel.
-
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.jpgrya.
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.
Scorcher24Wenn 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.EXEIm 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.
Scorcher24Wenn 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.DLLWas 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