我已經改變了一個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查看。是的,它的工作原理是,而且目標是在以後也能使用它。 –