标题: 利用/proc//exe恢复被删除的文件 创建: 2020-08-14 17:47 更新: 链接: https://scz.617.cn/unix/202008141747.txt 先不多说,直接看操作序列,有Linux基础的一看就明白。 $ cp $(which cat) /tmp/some $ md5sum $(which cat) /tmp/some 7dae2782851e077091a2980d986646a2 /usr/bin/cat 7dae2782851e077091a2980d986646a2 /tmp/some $ /tmp/some /dev/urandom > /dev/null 上述命令不会终止,始终在那里执行,换个伪终端继续。 $ rm -f /tmp/some $ ls -l /tmp/some ls: cannot access /tmp/some: No such file or directory $ ls -l /proc/$(pidof some)/exe lrwxrwxrwx. 1 scz scz 0 Aug 14 17:44 /proc/56823/exe -> /tmp/some (deleted) /tmp/some从文件系统删除了,但之前启动的那个进程还在,藉此可以恢复some文件。 尽管形式上看"/proc//exe"只是个符号链接,且源文件已被删除,但这种情况 下可以视之为源文件的物理备份,对之进行拷贝操作。 $ cp /proc/$(pidof some)/exe /tmp/some.recover $ md5sum $(which cat) /tmp/some.recover 7dae2782851e077091a2980d986646a2 /usr/bin/cat 7dae2782851e077091a2980d986646a2 /tmp/some.recover 该技巧存在很久,有些人可能没往这方面想过,有些人可能长期用不上而忘记它的存 在,干脆再提醒一下。 某些时候这招用得上。但有些时候可能必须进行内存转储,考虑自解压、自解密、自 脱壳的情形,再比如解密密钥是在环境变量中临时指定的,等等。关于内存转储,参 看: 《*nix环境用户态memdump的几种方案》 https://scz.617.cn/unix/201811271208.txt