2011-03-23 119 views
0

我不小心刪除了一個帶有一些有價值的代碼的.cpp文件。 這是我自己的圖書館的一部分:libandrissh.so 我該如何恢復它?我試過手術刀,但沒有找到它。如何從linux庫文件中恢復cpp數據?

我想知道如果我能以某種方式從我的.so或.o其他文件中提取信息在我的庫中。我認爲這可能是可能的,因爲我使用該庫的程序仍然有效。

有什麼建議嗎? 謝謝你們

+0

也許,如果它是在調試模式下構建的,它可能會檢索該代碼?代碼有人給我們的見解呢? – tibur 2011-03-23 14:10:33

+3

您無法將編譯後的代碼恢復到原始源代碼。你最好試着恢復原始文件。找出你正在使用的文件系統,然後谷歌「恢復已刪除的文件」 – meagar 2011-03-23 14:11:03

+1

這就是爲什麼人們使用源代碼管理! – 2011-03-23 14:59:46

回答

2

如果你有庫二進制文件,你當然可以反彙編它(例如使用objdump --disassemble libandrissh.so),但從「裸機」代碼返回到像C++這樣的高級語言並不容易。我不知道有任何標準工具可以做到這一點。

0

你可以嘗試一些反彙編像IDAPro

根據所使用的編譯器,標誌和其他一切你可能會得到不錯的結果。

3

如果它被刪除,而不是在回收站或垃圾箱中,則無法從編譯的二進制文件輕鬆恢復。有反彙編器可以幫助你達到這個目標,但是我還沒有看到任何可以讓你回到原始資源的反編譯器。無論如何,即使它們可能無法恢復原始符號/變量名稱。

最好的辦法就是看PhotoRec這樣的東西來搜索硬盤上的空閒扇區。儘管它的名字,它實際上發現許多不同的文件格式,包括視頻,音樂,文件,文本甚至C源文件。只要你的文件沒有被覆蓋,你很可能會找到它。當她的文件系統變得腐敗時,我用它從妻子的硬盤中恢復了大量數據。另外,它在GPL下是免費的。