Gibt es eine Möglichkeit zu sagen, was Sprache für ein Programm verwendet?

stimmen
14

Ich habe ein Desktop-Programm, das ich heruntergeladen und installiert. Es läuft von einer Exe-Datei.

Gibt es irgendeine Art und Weise von der EXE-Datei zu erklären, welcher Programmiersprache verwendet wurde, um das Programm zu schreiben?

Gibt es irgendwelche Werkzeuge sind verfügbar mit diesem helfen?

Was kann Sprachen bestimmt werden und welche nicht?


Okay, hier sind zwei von der Art der Dinge, die ich suche:

  1. Tipps zu bestimmen, ob eine App in Delphi geschrieben ist oder nicht

  2. Dieses „IsDelphi“ Programm von Bruce McGee alle Anwendungen mit Delphi, Delphi für .NET oder C ++ Builder gebaut finden , die auf der Festplatte sind.

Veröffentlicht am 30/12/2009 um 02:08
quelle vom benutzer
In anderen Sprachen...                            


11 antworten

stimmen
3

Ein guter Disassembler , und natürlich ein hervorragendes Verständnis der zugrunde liegenden CPU - Architektur, kann oft helfen Sie , die Laufzeitbibliotheken zu identifizieren , die im Spiel sind. Es sei denn , die exe sorgfältig „gestrippt“ von Symbolen und / oder anderweitig maskiert worden ist, werden die Namen von Symbolen in Laufzeitbibliotheken gesehen oft bieten Ihnen programmiersprachen Hinweise, da verschiedene Sprachen Standards verschiedenen Namen angeben, und Anbieter von Compilern und zugehörigen Laufzeitbibliotheken respektieren in der Regel diese Standards ziemlich eng.

Natürlich werden Sie nicht da ohne Standards Kenntnisse über die verschiedenen möglichen Sprachen und ihre Bibliothek - und wenn der Autor der Code Absicht, die Informationen zu verbergen war, das ist nicht zu schwer für sie, entweder zu tun.

Beantwortet am 30/12/2009 um 02:15
quelle vom benutzer

stimmen
1

Beginnen Sie mit verschiedenen Optionen dumpbin. Die Symbolnamen, wenn sie nicht sorgfältig gelöscht, werden Sie alle Arten von Hinweisen, ob es sich um C, C ++, CLR, oder etwas anderes.

Beantwortet am 30/12/2009 um 02:15
quelle vom benutzer

stimmen
4

Zuerst schauen, um zu sehen, was Zeit Bibliotheken führen Sie es lädt. AC-Programm wird in der Regel nicht Visual Basic-Bibliothek laden.

Außerdem untersucht die ausführbare Datei für verräterische Saiten. In den meisten ausführbaren Dateien ist dies am Ende. Wenn das Programm String-Konstanten verwendet, könnte es ein Hinweis, wie sie gespeichert sind.

Beantwortet am 30/12/2009 um 02:18
quelle vom benutzer

stimmen
3

Wenn Sie eine große Menge von Proben aus bekannten Compiler zur Verfügung haben, soll ich denke, das ist für maschinelles Lernen eine hervorragende Anwendung wäre. Ich glaube, so genanntes „überwachtes Lernen“ ist hier relevant. Ich weiß so gut wie nichts über das Thema nur für leider, dass ich einige beeindruckende Ergebnisse auf Konferenzen vorgestellt gehört haben.

Sie könnten durch das Verfahren der graben Arbeitskonferenz über Reverse Engineering zu sehen , ob jemand Interesse an diesem Problem.

Beantwortet am 30/12/2009 um 23:40
quelle vom benutzer

stimmen
2

Angenommen, dies ist eine Anwendung für Windows ...

Hat Reflector es als .NET-Assembly erkennen? Dann ist es MSIL, 99% entweder VB oder C #, aber Sie werden wahrscheinlich nie wissen, welche, noch ist es gleichgültig.

Ist es eine intrepreter benötigen (wie Java?)? Dann ist es Java (oder was auch immer der Dolmetscher ist.)

Prüfen Sie, welche Laufzeit DLLs es erfordert.

Ist es den VB Runtime-DLLs benötigen? Herzlichen Glückwunsch, VB von Visual Studio 6.0 oder früher.

Ist es die Delphi-DLLs benötigen? Herzlichen Glückwunsch, Delphi.

Haben Sie machen es weit das? C / C ++. Es sei angenommen, C ++, es sei denn es msys oder Cygwin DLLs erfordert, in welchem ​​Fall C vielleicht eine Chance von 25% hat.

Herzlichen Glückwunsch, sollte dies für die überwiegende Mehrheit der Windows-Software korrekt herauskommen. Dies ist wahrscheinlich nicht wirklich Sie aber helfen, wie viel die gleichen Dinge können in all diesen Sprachen durchgeführt werden.

Beantwortet am 30/12/2009 um 23:57
quelle vom benutzer

stimmen
2

IDA Pro Free ( http://www.hex-rays.com/idapro/idadownfreeware.htm ) kann hilfreich sein. Auch wenn Sie nicht in Assemblersprache verstehen, wenn Sie die EXE - Datei in IDA Pro laden dann seine erste Fortschritte Ausgabe könnte (wenn es irgendwelche verräterischen Anzeichen sind) sind seine beste Vermutung, welcher Compiler verwendet wurde.

Beantwortet am 02/01/2010 um 23:29
quelle vom benutzer

stimmen
1

Andere Tools verwenden Signaturen die Compiler zu identifizieren, verwendet, um die ausführbare Datei zu erstellen, wie PEiD, CFF Explorer und andere.

Sie scannen normalerweise den Eintrittspunkt der ausführbaren Datei gegen die Signatur.

Signature Explorer von CFF Explorer können Sie ein Verständnis dafür , wie eine Unterschrift aufgebaut ist.

Beantwortet am 05/01/2010 um 07:02
quelle vom benutzer

stimmen
8

Ich benutze WinDowse (ein kleines Freeware - Programm in Delphi geschrieben) .. zum Beispiel die Fenster des Programms zu spionieren , wenn man sich die „Klasse“ aussehen tabsheet Sie die „Klasse“ Name der Kontrolle entdecken ..

Beispielsweise:

  • TFormXX, TEditYY, TPanelZZZ für delphi Apps
  • WindowsForms10.XXXX.yyy, für .NET-Anwendungen
  • wxWindowsXXX für wxWindows Apps
  • AfxWndXX für MFC / VC ++ apps (glaube ich)

Ich denke , dass dies der schnellste Weg ist (obwohl nicht die genaueste ) Informationen über Apps finden ..

Beantwortet am 05/01/2010 um 08:45
quelle vom benutzer

stimmen
4

Ich verstehe Ihre Neugier.

Sie können durch die Suche nach ein paar spezifischen Ressourcen Delphi und C ++ Builder - Anwendungen und ihre SKU identifizieren , die der Linker hinzufügt. Insbesondere RC Data \ DVCLAL und RC DATA \ Package. Der XN Resource Editor macht das viel einfacher, aber es könnte auf komprimierte EXE - Dateien ersticken.

EXE Kompressoren erschweren die Dinge ein wenig. Sie können verstecken oder den Inhalt der Ressourcen unkenntlich zu machen . Programme mit Druck UPX sind einfach , mit einem identifizieren HEX - Editor , weil die ersten zwei Abschnitte in den PE - Header UPX0 und UPX1 benannt sind. Sie können die App diese entpacken verwenden.

Anwendungen kompiliert mit .Net sind nicht schwer zu erkennen. Neuere Versionen von Delphi gehören auch eine IsAssembly Funktion, oder Sie könnten ein wenig Spelunking im PE-Header tun. Überprüfen Sie die IsManaged Funktion in IsDelphi aus.

Telling, die .NET-Sprache verwendet wurde, ist schwieriger. Standardmäßig enthält VB.Net einen Verweis auf Microsoft.VisualBasic und VCL.Net Anwendungen enthielten Borland spezifische Referenzen. Allerdings ist VCL.Net verstorbene für Delphi Prism, und Sie können einen Verweis auf den VB Baugruppe zu jeder verwalteten Sprache hinzuzufügen.

Ich habe nicht auf einige der Anwendungen gesucht, die Signaturen verwenden, um die den Compiler zu identifizieren, so dass ich weiß nicht, wie gut sie funktionieren.

Ich hoffe das hilft.

Beantwortet am 06/01/2010 um 01:49
quelle vom benutzer

stimmen
0

Es sieht aus wie die VC ++ Linker aus V6 bis eine Signatur fügt an die PE - Header , die YouCan Parsen.

Beantwortet am 06/01/2010 um 10:32
quelle vom benutzer

stimmen
0

Ich schlage vor , PEiD (Freeware, Closed - Source). Hat alle von Delphi für Win32 - Signaturen kann auch sagen Ihnen , welche Packer (falls vorhanden) verwendet wurde.

Beantwortet am 08/01/2010 um 01:34
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more