我想知道是否有办法通过拦截取消链接的调用来创建垃圾。理论上,文件将被加上时间戳并在设定的时间段后删除。
答案1
就在这里。此类事情(覆盖标准函数)的一般机制称为 LD_PRELOAD。总体思路非常简单,当将库加载到程序的内存中时,第一个定义给定符号名称的库就定义了该符号的用途。因此,LD_PRELOAD 允许您告诉动态链接器在所有其他库(包括 libc)之前加载特定库,这意味着它们可以覆盖稍后加载的库中的特定函数。
使用 LD_PRELOAD 的广泛使用的项目示例包括:
- 杰马洛克可以预先加载,以便您可以将 jemalloc 内存分配器与本身不显式使用它的程序一起使用。
- 日期软糖让您伪造系统时间和日期。
- 解放我的数据覆盖
sync()
和相关调用不执行任何操作,以牺牲数据安全为代价提高某些应用程序的性能。 - 但丁包括一个使用 LD_PRELOAD 为本身不支持 SOCKS 协议的应用程序启用 SOCKS 协议的命令。
还有一个库可以完全满足您的要求,称为libtrash
.官方网页可以找到这里。我不确定它是否有效,因为我自己从未使用过它,但最近发布了新版本,所以看起来作者至少仍在维护它。