有沒有什麼辦法通過使用C中的目標文件來獲取源代碼?從目標文件獲取源文件
例如我有一個源代碼simple.c
立方厘米simple.c
現在我的a.out(目標文件)。通過這個a.out我是否可以獲得源代碼? simple.c的
代碼
有沒有什麼辦法通過使用C中的目標文件來獲取源代碼?從目標文件獲取源文件
例如我有一個源代碼simple.c
立方厘米simple.c
現在我的a.out(目標文件)。通過這個a.out我是否可以獲得源代碼? simple.c的
代碼
有許多有用的工具從您的可執行文件中檢索信息。他們都沒有能夠給你回原始源代碼(正如其他一些用戶指出的那樣,C是不可能的),但是你可以嘗試一些逆向工程工具。我的首選之一是:
與第一個其實你可以得到一切導出符號及其相關的可執行代碼(顯然這僅適用於.text
部分)。第二個目標是與intel架構一起工作,但是您將能夠分析每個可執行文件並獲取有關ELF部分和符號的信息。
號
隨着逆向工程(讀取拆卸)一個可重構邏輯的,但變量名,註釋等通常會丟失。
您正在尋找的程序的單詞是「disassembler」(將a.out中的機器語言轉換爲彙編語言)和「decompiler」(將彙編語言轉換爲C,如Dacav所解釋的那樣,困難和結果永遠不會令人滿意)。
但是使用帶有這些詞的網絡搜索引擎可能會產生結果。
如果你使用的是Linux,使用GDB
$ gdb a.out
(GDB)list
的可能重複::-) – 2015-10-02 08:57:02