我不小心删除了一个包含我的一些有价值代码的 .cpp 文件。它是我自己的库的一部分: libandrissh.so 我怎样才能恢复它?我试过手术刀,但没有找到。
我想知道我是否可以以某种方式从我的库中的 .so 或 .o 其他文件中提取信息。我认为这是可能的,因为我使用该库的程序仍然有效。
有什么建议么?多谢你们
我不小心删除了一个包含我的一些有价值代码的 .cpp 文件。它是我自己的库的一部分: libandrissh.so 我怎样才能恢复它?我试过手术刀,但没有找到。
我想知道我是否可以以某种方式从我的库中的 .so 或 .o 其他文件中提取信息。我认为这是可能的,因为我使用该库的程序仍然有效。
有什么建议么?多谢你们
如果它被删除并且不在回收站或垃圾箱中,则无法从已编译的二进制文件中轻松恢复它。有反汇编器可以让你走那么远,但我还没有看到任何可以让你回到原始源的生产准备好的反编译器。即使他们可以,它也可能无法恢复原始符号/变量名。
最好的办法是查看诸如PhotoRec之类的东西来搜索硬盘上的空闲扇区。尽管它的名字,它实际上可以找到许多不同的文件格式,包括视频、音乐、文档、文本甚至 C 源文件。只要您的文件没有被覆盖,您就可以找到它。当她的文件系统损坏时,我用它从我妻子的硬盘驱动器中恢复了很多数据。此外,它在 GPL 下是免费的。
如果你有二进制库,你当然可以反汇编它(使用 eg objdump --disassemble libandrissh.so
),但是从“裸”机器代码回到像 C++ 这样的高级语言并不容易。我不知道有任何标准工具可以做到这一点。
您可以尝试一些反汇编程序,例如IDAPro
根据使用的编译器、标志和其他一切,您可能会得到不错的结果。