我有一个Linux可执行文件,似乎是用C ++编写的,使用GNU编译器,并且在调试模式下。我想知道我的结论是否正确,我有什么机会将它反编译成至少有些可读的东西。以下是可执行文件中的一些告密片段:
Snippet 1
</heap>
<malloc version="1">
nclears >= 3 Arena %d:
system bytes = %10u
in use bytes = %10u
Total (incl. mmap):
max mmap regions = %10u
Snippet 2
__gnu_cxx::__concurrence_lock_error
摘录3
ELF file ABI version invalid ◻ invalid ELF header ◻ ELF file OS ABI invalid
摘录4
GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 ◻
GCC: (Ubuntu/Linaro 4.4.4-14ubuntu1) 4.4.5 20100909 (prerelease)
Snippet 5
_dl_debug_vdprintf pid >= 0 && sizeof (pid_t) <= 4
...
_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT
这个文件充满了这样的可读文本(但大多数仍然是胡言乱语)。我不认为你应该在发布模式下编译的可执行文件中找到这种文本(然后再次,我对这个问题的了解非常有限)。我应该尝试在这个可执行文件上使用什么反编译器?
答案 0 :(得分:1)
为什么不在main中放置断点并运行可执行文件???如果是调试模式,您可以看到完整的源代码(如果源文件存在于同一路径中)。您可以单步执行每一步,并使用精确参数查看函数调用。