我已经改变了一个ELF二进制文件,现在我正在试图找出我搞错了什么。 我在下面粘贴的文本中将我的插装二进制文件称为mutatee_out
。 它所说的未定义的符号确实在动态表中,我已经检查过。并且在.text
部分也有正确的地址。为什么一个符号不能在二进制文件上搜索?
所以我的问题是:什么是未定义符号的原因? (所以我可以检查可能发生了什么问题)。
当我用LD_DEBUG=symbols
运行时,我注意到它没有在文件本身中查找这个符号,因此是未定义的符号。您也可以在下面看到其他符号在文件中查找。
任何想法?为什么这个符号不能在二进制文件上搜索?
17405: symbol=_ZTVSt11regex_error; lookup in file=mutatee_out [0]
17405: symbol=_ZTVSt11regex_error; lookup in file=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 [0]
17405: symbol=__gxx_personality_v0; lookup in file=mutatee_out [0]
17405: symbol=_ZN9__gnu_cxx27__verbose_terminate_handlerEv; lookup in file=mutatee_out [0]
17405: symbol=_ZN9__gnu_cxx27__verbose_terminate_handlerEv; lookup in file=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 [0]
17405: symbol=_ZSt9terminatev; lookup in file=mutatee_out [0]
17405: symbol=_ZSt9terminatev; lookup in file=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 [0]
17405: symbol=__gmon_start__; lookup in file=mutatee_out [0]
17405: symbol=__gmon_start__; lookup in file=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 [0]
17405: symbol=__gmon_start__; lookup in file=/lib/x86_64-linux-gnu/libgcc_s.so.1 [0]
17405: symbol=__gmon_start__; lookup in file=/lib/x86_64-linux-gnu/libc.so.6 [0]
17405: symbol=__gmon_start__; lookup in file=/lib/x86_64-linux-gnu/libm.so.6 [0]
17405: symbol=__gmon_start__; lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
17405: symbol=__gmon_start__; lookup in file=/lib/x86_64-linux-gnu/libdl.so.2 [0]
17405: symbol=_ZN9decl_test8call_cppEi; lookup in file=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 [0]
17405: symbol=_ZN9decl_test8call_cppEi; lookup in file=/lib/x86_64-linux-gnu/libgcc_s.so.1 [0]
17405: symbol=_ZN9decl_test8call_cppEi; lookup in file=/lib/x86_64-linux-gnu/libc.so.6 [0]
17405: symbol=_ZN9decl_test8call_cppEi; lookup in file=/lib/x86_64-linux-gnu/libm.so.6 [0]
17405: symbol=_ZN9decl_test8call_cppEi; lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
17405: symbol=_ZN9decl_test8call_cppEi; lookup in file=/lib/x86_64-linux-gnu/libdl.so.2 [0]
17405: mutatee_out: error: symbol lookup error: undefined symbol: _ZN9decl_test8call_cppEi (fatal)
可执行文件是否工作_before_您添加了病毒代码?...我的意思是在编辑二进制可执行文件之前? –
这不是病毒代码。这是一个严肃的项目,你可以在GitHub.com/dyninst查看。是的,它的工作原理是,而且目标是在以后也能使用它。 –