給定應用程序的可執行文件(Windows,Linux或Mac OS X),是否有辦法找出用於編寫該應用程序的編程語言?如何從中編譯可執行文件的語言?
0
A
回答
0
在一般情況下,我會認爲不是。然而,在特定情況下,這可能是可能的。
+0
您可以給_general_個案提供一個不合格的** no **,因爲我現在可以設計兩種簡單的語言,併爲編譯器生成精確的每種語言中「相似」程序的相同可執行文件。 –
0
除非有一些與它相關的特定元數據或某個與該exe相關的語言特定功能,否則極不可能。可執行文件(通常)是針對特定平臺或中間代碼編譯的代碼,它們將針對特定語言進行即時編譯。在JIT代碼的情況下,您可能能夠確定其.NET或其他語言是否產生中間代碼,但大多數情況下這是一項相當困難和不合理的任務。我可能是錯的,但根據我的理解,這是不可能的。
0
我不妨在最後回答。
即使給定編程語言的編譯器決定在數據段中拋出一些元數據(如符號),並帶有諸如「從Joe's C compiler版本4.1.104編譯」之類的消息,沒有任何東西可以阻止我從編寫一個Go編譯器,將相同的消息寫入數據部分中的相同位置,以誘騙不知情的人查看可執行文件。
更不用說,可以爲任何給定的語言編寫無數的編譯器。
假設我們看一個只包含幾個字節的可執行文件......只不過是遞增一個寄存器罷了。數百種不同的語言允許編譯器理論上可以優化爲無元數據的單節可執行文件。
答案根本不是。
TL; DR:你總是可以欺騙。
相關問題
- 1. 如何編譯成可執行文件
- 2. 編譯執行和編程語言
- 3. 從.pro編譯可執行文件
- 4. 從編譯的可執行文件獲取編譯器選項?
- 5. 如何使用匯編語言編寫可執行文件?(在emacs中)
- 6. 如何編譯Mac的可執行文件,但從PC?
- 7. 編譯的C文件不可執行
- 8. 如何用c語言運行可執行文件?
- 9. 如何編譯計劃中的可執行文件?
- 10. 編譯py2exe從可執行
- 11. 如何將C文件編譯爲可執行文件(.exe)?
- 12. 如何用可可編程語言運行.command文件?
- 13. 如何使用C11語言方言編譯Xcode C文件?
- 14. 如何在編譯後執行文件?
- 15. 編譯後可執行文件出錯
- 16. SqlCipher編譯爲Win可執行文件
- 17. 如何爲該語言的某種語言編寫編譯器?
- 18. 如何在可執行文件c#中包含語言文件夾?
- 19. 無法從可執行文件jar中找到javac編譯器
- 20. 如何通過g ++編譯獨立的可執行文件?
- 21. 如何將.py編譯爲Debian的可執行文件
- 22. 如何確定可執行文件編譯的平臺?
- 23. 寫編程語言:如何編譯
- 24. 如何在Mercury編程語言中編譯進行調試?
- 25. 以編譯語言編寫的插件
- 26. MacOS編譯從小牛獅子兼容的可執行文件
- 27. 從Clang編譯的可執行文件使用emscripten
- 28. 哪種語言可以編譯獨立的exe文件
- 29. 如何爲另一臺機器編譯Linux可執行文件?
- 30. 如何將python編譯爲可執行文件?
可能的重複 - http://stackoverflow.com/questions/1704202/determine-source-language-from-a-binary/1704449#1704449。在大多數情況下,將會有「獨特」的特徵,但它不會是微不足道的 - 例如沒有用語言,編譯器,版本等標記的標準元數據頭。 – StuartLC