Получить имена вызываемых функций в программе на Си (Lib ELF) - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь получить имя вызываемой функции в программе на Си.

Например, это мой код:

void toto(void)
{
    printf("toto\n");
}

void tutu(void)
{
    printf("tutu\n");
}

void mdr(void)
{
    printf("tutu\n");
    printf("tutu\n");
    printf("tutu\n");
    printf("tutu\n");
}

int main(int ac, char **av)
{
    toto();
    tutu();
    mdr();
}

Я хочу получить только результаты:Main (), toto (), пачка () и mdr ().Но проблема в том, что когда я использую Libelf, я извлекаю некоторую информацию из таблицы символов, но она дает мне названные функции и многое другое, как в этом примере:

...
    57: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __libc_start_main@@GLIBC_
    58: 0000000000401148    47 FUNC    GLOBAL DEFAULT   13 mdr
    59: 0000000000401126    17 FUNC    GLOBAL DEFAULT   13 toto
    60: 0000000000404020     0 NOTYPE  GLOBAL DEFAULT   23 __data_start
    61: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
    62: 0000000000402008     0 OBJECT  GLOBAL HIDDEN    15 __dso_handle
    63: 0000000000401137    17 FUNC    GLOBAL DEFAULT   13 tutu
    64: 0000000000402000     4 OBJECT  GLOBAL DEFAULT   15 _IO_stdin_used
    65: 00000000004011a0   101 FUNC    GLOBAL DEFAULT   13 __libc_csu_init
    66: 0000000000404028     0 NOTYPE  GLOBAL DEFAULT   24 _end
    67: 0000000000401070     5 FUNC    GLOBAL HIDDEN    13 _dl_relocate_static_pie
    68: 0000000000401040    47 FUNC    GLOBAL DEFAULT   13 _start
    69: 0000000000404024     0 NOTYPE  GLOBAL DEFAULT   24 __bss_start
    70: 0000000000401177    37 FUNC    GLOBAL DEFAULT   13 main
    71: 0000000000404028     0 OBJECT  GLOBAL HIDDEN    23 __TMC_END__
    72: 0000000000401000     0 FUNC    GLOBAL HIDDEN    11 _init

Так как я могутолько восстановить мои вызванные функции?Еще раз спасибо за помощь

...