Linux LD_使用文件函数预加载
我有一种非常特殊的文件格式: 每一行都以其内容的校验和开头,后跟一个新行字符 看起来是这样的:Linux LD_使用文件函数预加载,linux,function,overriding,ld-preload,Linux,Function,Overriding,Ld Preload,我有一种非常特殊的文件格式: 每一行都以其内容的校验和开头,后跟一个新行字符 看起来是这样的: [CHECKSUM OF LINE_1][LINE_1]\n [CHECKSUM OF LINE_2][LINE_2]\n [CHECKSUM OF LINE_3][LINE_3]\n ... 我的目标是:允许任何应用程序像处理任何其他文本文件一样处理这些文件——不知道每行开头的附加校验和 由于我在一台带有debian wheezy(内核3.18.26)的linux机器上工作,我想使用LD_PREL
[CHECKSUM OF LINE_1][LINE_1]\n
[CHECKSUM OF LINE_2][LINE_2]\n
[CHECKSUM OF LINE_3][LINE_3]\n
...
我的目标是:允许任何应用程序像处理任何其他文本文件一样处理这些文件——不知道每行开头的附加校验和
由于我在一台带有debian wheezy(内核3.18.26)的linux机器上工作,我想使用LD_PRELOAD-mechanism覆盖相关的文件函数。
我在zlibc上看到过类似的情况,并解释了它是如何工作的()
但是我不明白。它们仅替换文件打开功能。禁止阅读。不要写。没问题。没有什么。那么它是如何工作的呢?
或者-我必须截取哪些函数来处理此文件上的每个读或写操作并相应地处理它们?我没有确切地检查它是如何工作的,但原因似乎很简单 可能的实施: zlibc开放:
打开
,使用带条校验和复制文件<代码>关闭计算校验和并覆盖原始文件的读取
和写入
,能够跳过/计算校验和在这种情况下,我相信重写
open
和close
将不太容易出错,因为您可以安全地重用原始读
、写
、fread
、fseek
等。这听起来确实是一种合理的方法。我的假设正确吗?所有函数,如fopen
,fclose
,fgets
,fputs
,fread
,fwrite
,等等。。。所有这些函数都是库函数,它们在某种程度上使用了您提到的系统调用?像fseek
和ftell
这样的函数呢?我是否应该拦截其他系统调用以确保一切正常?