"gcc a.C语言 o a.c"我可以通过什么方式恢复真实的.c文件



遗憾的是,我用下面的命令编译了一个。c文件:

$ gcc a.c -o a.c

所以a.c成为覆盖我旧的c文件的可执行文件…我想问我能有真正的a.c文件回来和如何?

不幸的是,这几乎是不可能的,除非您精通二进制代码的逆向工程。

您可以从备份中恢复它,也可以从源代码控制系统中恢复它。

如果你没有这两个,你应该开始使用这两个(现在你知道为什么了!)。

您也可以使用您正在使用的操作系统的文件恢复工具来恢复文件,或者如果失败,您可以反编译目标文件。这是一个反编译器:

http://boomerang.sourceforge.net/cando.php?hidemenu

这是在谷歌搜索"c反编译器"后出现在列表中的第一个。

这是一个关于反编译器的stackoverflow问题。

什么是好的C反编译器?

当您覆盖一个文件时,操作系统不会在物理上将数据完全放在同一个位置,它只是将旧数据标记为可用,并将新数据写入磁盘。它可能会覆盖您的文件,也可能不会。午夜指挥官有一个工具,可以尝试恢复你的文件。

目前午夜指挥官是打包与一些虚拟文件系统(VFS):…undelfs,用于恢复ext2文件系统(Linux系统的默认文件系统)上已删除的文件

午夜指挥官指南

同时,你可能不应该在计算机上保存任何其他文件,特别是在你删除的文件所在的目录下。

编辑:顺便说一下,这是一篇老文章,linux已经有一段时间没有使用ext2了。但是我觉得还是可以的

grep是一个很好的工具来恢复丢失的C文件。

grep -a -B 25 -a 100 'some string in file'/dev/sda1> recovery .txt

上面的命令恢复C文件中'some string in The file'行之前25行和之后100行丢失的文本,并在recover.txt文件中输出恢复的文本。因此,您可以根据需要更改25和100的值。上述命令还假设分区名称为/dev/sda1。您可以使用mount命令来查找您的分区名称。

最新更新