使用共享库:自定义 myfopen()、myfrwrite()
using a shared library : custom myfopen(), myfrwrite()
您好,我创建了一个名为 logger.so
的共享库。这个库是我的自定义 fopen()
和 fwrite()
。它收集一些数据并生成包含这些数据的文件。
现在我正在编写一个 bash 脚本,我也想使用这个库。生成一个 txt 文件,我将能够看到生成自定义 fopen()
的额外文件。因此,当我在 c 文件中使用命令 fopen()
时,会生成这个额外的文件。
我的问题是哪些命令在 bash 中使用 fopen()
和 fwrite()
函数?
我已经预加载了我的共享库,但它不起作用。也许这些命令不使用 fopen()
,fwrite()
export LD_PRELOAD=./logger.so
read -p 'Enter the number of your files to create: [ENTER]: ' file_number
for ((i=1; i<=file_number; i++))
do
echo file_"$i" > "file_${i}"
done
这可能需要反复试验。我看到有两种方法可以做到这一点。一个是 运行 处理 bash
中文件的潜在命令,并查看在跟踪时它们是否调用 fopen
:
strace bash -c "read a < /dev/null"`
或
strace bash -c "read a < /dev/null"` 2&>1 | fgrep fopen
这表明 read
使用 open
,而不是 fopen
。
另一种方法是按照@oguz 的建议grep
通过bash 的源代码。当我这样做时,我发现了几个调用 fopen
的地方,但我没有进一步调查:
curl https://mirrors.tripadvisor.com/gnu/bash/bash-5.1-rc3.tar.gz|tar -z -x --to-stdout --wildcards \*.c | fgrep fopen
您需要解压缩整个包并逐一搜索 .c 文件,例如:
curl https://mirrors.tripadvisor.com/gnu/bash/bash-5.1-rc3.tar.gz|tar -z -v -x --wildcards \*.c
您也可以 FTP 文件或通过浏览器保存它,如果没有 curl
(wget
也可以,则独立执行 tar
).
希望你能追踪到相关命令,但这可能并不容易。
不一定每个程序都使用 C 标准库 stdio 函数 fopen
和 fwrite
。
但是每个程序都使用 open
和 write
系统调用来打开和写入文件,您可以插入/monkey-patch。
使用 io_uring
的现代程序需要不同的插入方法。
您好,我创建了一个名为 logger.so
的共享库。这个库是我的自定义 fopen()
和 fwrite()
。它收集一些数据并生成包含这些数据的文件。
现在我正在编写一个 bash 脚本,我也想使用这个库。生成一个 txt 文件,我将能够看到生成自定义 fopen()
的额外文件。因此,当我在 c 文件中使用命令 fopen()
时,会生成这个额外的文件。
我的问题是哪些命令在 bash 中使用 fopen()
和 fwrite()
函数?
我已经预加载了我的共享库,但它不起作用。也许这些命令不使用 fopen()
,fwrite()
export LD_PRELOAD=./logger.so
read -p 'Enter the number of your files to create: [ENTER]: ' file_number
for ((i=1; i<=file_number; i++))
do
echo file_"$i" > "file_${i}"
done
这可能需要反复试验。我看到有两种方法可以做到这一点。一个是 运行 处理 bash
中文件的潜在命令,并查看在跟踪时它们是否调用 fopen
:
strace bash -c "read a < /dev/null"`
或
strace bash -c "read a < /dev/null"` 2&>1 | fgrep fopen
这表明 read
使用 open
,而不是 fopen
。
另一种方法是按照@oguz 的建议grep
通过bash 的源代码。当我这样做时,我发现了几个调用 fopen
的地方,但我没有进一步调查:
curl https://mirrors.tripadvisor.com/gnu/bash/bash-5.1-rc3.tar.gz|tar -z -x --to-stdout --wildcards \*.c | fgrep fopen
您需要解压缩整个包并逐一搜索 .c 文件,例如:
curl https://mirrors.tripadvisor.com/gnu/bash/bash-5.1-rc3.tar.gz|tar -z -v -x --wildcards \*.c
您也可以 FTP 文件或通过浏览器保存它,如果没有 curl
(wget
也可以,则独立执行 tar
).
希望你能追踪到相关命令,但这可能并不容易。
不一定每个程序都使用 C 标准库 stdio 函数 fopen
和 fwrite
。
但是每个程序都使用 open
和 write
系统调用来打开和写入文件,您可以插入/monkey-patch。
使用 io_uring
的现代程序需要不同的插入方法。