好吧,似乎没人受到打击,这是我的链接器建议:
- 插入libc,提供自己的内容
write()
,并将输出过滤到文件描述符1
和2
。 - 将您自己的代码与libc静态链接,然后
write()
如上所述将共享版本插入静噪。 - 插入libc,提供
my_write()
绕过write()
using 的功能dlsym()
。 write
通过链接链接共享库时自动换行-Wl,--wrap=write
。然后,将所有输出压缩到文件描述符中,1
并2
使用一个称为的函数__wrap_write
。其他文件描述符应通过调用__real_write
。
请注意,对于那些不知道的文件描述符
1,它们
2对应于
stdout和
stderr,并且最终写入到
cout/
cerr机器中。通常,这是实现的
cout调用
fwrite,这些调用
write在不同级别具有不同级别的缓冲和恶作剧。
最好的选择是选项4,缺点是您必须调整共享库的最终链接。
下一个最好的选择是上面的选项2,缺点是最终的可执行文件要大得多,但是不必在您自己的代码中使用愚蠢的函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)