如果我在一個目錄中有3-4個或更多的.c文件,並且我編譯了其中一個文件來執行a.out
。有沒有辦法通過命令找出這個可執行文件是從哪個c文件中獲得的?如何找到獲取它的可執行文件的.c文件?
-1
A
回答
1
不,不是直接。該文件剩下的唯一元數據是其ELF headers,它不包含從其編譯的.c文件的名稱。如果他們這樣做會有問題:如果它來自多個.c文件會怎麼樣?它是否包含系統中與鏈接的二進制文件的路徑?如果重命名.c文件會發生什麼?重命名.c文件需要重新編譯嗎?除此之外,還有很多方法可以解決這個問題:運行可執行文件並將其與.c文件進行比較,或者嘗試編譯每個.c文件並比較兩個可執行文件(假設您知道什麼標誌着可執行文件被編譯)。
1
我認爲一般來說,沒有辦法從可執行文件的源文件中找出(確切地)。您可以查看可執行文件的行爲,並說「aha,它來自該文件」,但這不是絕對的,因爲可以有多個版本的源文件。其他參數已經被提供,例如編譯源文件和比較二進制文件,這要求所有編譯器選項設置相同(並且要求al庫也相同)。
最後,您可以查看二進制文件中的字符串,並將它們與源文件中的字符串進行比較。
相關問題
- 1. CreateProcess如何找到可執行文件?
- 2. 獲取可執行文件
- 3. 如何在C中找到可執行文件的位置?
- 4. 如何獲取可執行文件的屬性C
- 5. 如何獲取C++中的可執行文件名?
- 6. 我正在編譯.c文件並獲取可執行文件。如何在Windows 8中執行exe文件
- 7. Pycharm沒有找到可執行文件的可執行文件selenium
- 8. 如何獲取庫/可執行文件的可執行代碼段的大小?
- 9. 從c#中的可執行文件中提取文件
- 10. Jenkins找不到maven可執行文件
- 11. 沒有找到matlab可執行文件
- 12. 找不到simplecov可執行文件
- 13. 找不到Graphviz可執行文件
- 14. 無法找到可執行文件jre1.8.0_77
- 15. 如何在目錄中找到最新的可執行文件
- 16. 如何找到javadoc可執行文件的版本?
- 17. 如何找到macosx中可執行文件的位置?
- 18. 如何找到用戶剛啓動的可執行文件?
- 19. 如何找到當前的可執行文件名?
- 20. 獲取wpf c#的可執行文件項目
- 21. 從C++獲取python可執行文件的完整路徑
- 22. 如何從HPUX中的核心文件獲取可執行文件名?
- 23. NSIS - 如何獲取安裝程序可執行文件的文件名?
- 24. 如何獲取Java程序的可執行文件?
- 25. 如何獲取可執行文件所在的目錄?
- 26. 如何使用Fortran獲取可執行文件的位置?
- 27. 可執行文件如何從DLL文件中查找函數?
- 28. 如何在執行中獲取執行代碼的文件名?
- 29. 保存可執行文件到文件
- 30. 如何獲取Docker鏡像以運行可執行文件
你怎麼知道它不是由它們所有*構建的?或者他們都不是? – 2014-12-07 10:12:47
使用編譯器的所有不同選項編譯所有.c文件,然後將生成的可執行文件與第一個a.out文件進行比較。 – pmg 2014-12-07 10:12:54
Wby不運行程序並觀察其行爲?那麼您可以確定原始C代碼 – 2014-12-07 10:12:59