2015-11-25 2 views
1

Предположим, у меня есть lib xxx.so. Так я получаю имена всех функций и параметров следующие commnad:Способы найти все определения функций в двоичном файле эльфа

readelf -Ws xxx.so |c++filt 

Он будет выводить следующее:

711: 00270209 40 FUNC GLOBAL DEFAULT 8 debug_c_tree 
    7712: 00270231 128 FUNC GLOBAL DEFAULT 8 pp_c_tree_decl_identifier 
    7713: 00270723 90 FUNC GLOBAL DEFAULT 8 pp_c_init_declarator 
    7714: 002f546c  0 NOTYPE GLOBAL DEFAULT ABS _edata 
    7715: 002f546c  0 NOTYPE GLOBAL DEFAULT ABS __bss_start 
    7716: 002fc9e1  0 NOTYPE GLOBAL DEFAULT ABS _end 

Но как я могу легко сбросить все функции тела, как следующее в эльфа двоичном:

debug_c_tree() 
{ 
    mov eax, edx; 
    .... 
    .... 
} 

.... 
+0

Ваш вопрос очень неясен: в любом контексте я могу думать о том, что в файле 'ELF' легко найти имена и параметры функций, найти тела функций * проще *. –

+0

@EmployedRussian Я обновил свой вопрос. –

+0

Вы не получаете параметры с 'C++ filt', вы получаете параметры * types *. А для функций 'C' вы получаете * ничего *. –

ответ

3

как я могу легко сбросить все тело функции

objdump -d xxx.so 
0
objdump -D -z ELFfileName 

Это будет разбирать весь файл, включая все разделы, а также пространство между функциями.

Смежные вопросы