【问题标题】:How to recover cpp data from linux library files?如何从 linux 库文件中恢复 cpp 数据?
【发布时间】:2011-07-21 08:27:09
【问题描述】:

我不小心删除了一个包含我的一些有价值代码的 .cpp 文件。 它是我自己的图书馆的一部分:libandrissh.so 我怎样才能恢复它?我试过手术刀,但没有找到。

我想知道是否可以以某种方式从我的库中的 .so 或 .o 其他文件中提取信息。我认为这是可能的,因为我使用该库的程序仍然有效。

有什么建议吗? 谢谢大家

【问题讨论】:

  • 如果它是在调试模式下构建的,也许可以检索到该代码?代码有人可以让我们对此有所了解吗?
  • 您无法将编译后的代码还原为原始源代码。您最好尝试恢复原始文件。找出你正在使用的文件系统,然后谷歌“恢复已删除的文件”
  • 这就是人们使用源代码控制的原因!

标签: c++ file data-recovery


【解决方案1】:

如果它被删除并且不在回收站或垃圾箱中,您将无法从已编译的二进制文件中轻松恢复它。有反汇编器可以让你走那么远,但我还没有看到任何可以让你回到原始源的生产准备好的反编译器。即使他们可以,它也可能无法恢复原始符号/变量名。

最好的办法是查看PhotoRec 之类的内容来搜索硬盘上的空闲扇区。尽管它的名字,它实际上可以找到许多不同的文件格式,包括视频、音乐、文档、文本甚至 C 源文件。只要您的文件没有被覆盖,您就可以找到它。当她的文件系统损坏时,我用它从我妻子的硬盘驱动器中恢复了很多数据。此外,它在 GPL 下是免费的。

【讨论】:

    【解决方案2】:

    如果你有二进制库,你当然可以反汇编它(使用例如objdump --disassemble libandrissh.so),但是从“裸”机器代码回到像 C++ 这样的高级语言并不容易。我不知道有任何标准工具可以做到这一点。

    【讨论】:

      【解决方案3】:

      你可以试试IDAPro这样的反汇编程序

      根据使用的编译器、标志和其他所有内容,您可能会得到不错的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 2020-04-07
        • 2021-11-08
        • 2019-01-27
        • 2017-08-14
        • 2010-10-27
        相关资源
        最近更新 更多