我正在尝试使用 LLVM libFuzzer 对一段特定的代码进行模糊测试,该代码仅在main()
外部公开其功能。我可以访问目标代码的源代码,但无法更改它。
如果我尝试直接包含目标文件,它会与main
. -fsanitize=fuzzer
我想我可以通过重命名main
目标文件中的符号来解决这个问题:
objcopy --redefine-sym main=stub_main main.stub main.o
然后在我的线束代码中,我应该声明:
extern int stub_main(int argc, char **argv)
并调用stub_main()
而不是main()
,同时包括main.stub
在链接线上。但是,这似乎不起作用,并且链接器找不到对stub_main(int, char**)
.
如何main
从另一段也提供自己的代码中调用此函数main()
?